2015-07-20 8 views
0

Je suis nouveau dans le développement Blackberry et je suis bloqué sur l'analyse syntaxique JSON. J'ai appris comment appeler un service web en QML mais je ne sais pas comment analyser le résultat que j'obtiens qui est JSON. Est-ce que quelqu'un peut m'aider?Analyser JSON dans Cascades

Merci d'avance.

Mon code actuel:

Button { 
    id: newButton 
    horizontalAlignment: HorizontalAlignment.Center 
    verticalAlignment: VerticalAlignment.Center 
    topMargin: ui.du(3) 
    text: "Recharge" 
    appearance: ControlAppearance.Primary 

    onClicked: { 
     getData() 
    } 
} 

function getData() { 
    var xmlhttp = new XMLHttpRequest(); 
    var url = "http://sb2.in/AppServices.asmx/getoperator"; 

    xmlhttp.onreadystatechange=function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
      myFunction(xmlhttp.responseText); 
      //console.log(xmlhttp.responseText); 
     } 
    } 
    xmlhttp.open("GET", url, true); 
    xmlhttp.send(); 
} 

function myFunction(response) { 
    var arr = JSON.parse(response); 
    console.log(response);  // (1) 
} 

Voici la réponse JSON que je reçois, imprimé en (1):

[{ "CircleID": 1, "CIRCLENAME": "Andhra Pradesh "}, {" CircleID ": 4," CircleName ":" Assam "}, {" CircleID ": 5," CircleName ":" Bihar "}, {" CircleID ": 6," CircleName ":" Chennai " }, {"CircleID": 7, "CircleName": "Delhi"}, {"CircleID": 8, "CircleName": "Gujarat"}, {"CircleID": 9, "CircleName": "Himachal Pradesh" }, {"CircleID": 10, "CircleName": "Haryana"}]

Comment puis-je analyser correctement cette réponse JSON?

+0

Marqué comme trop large. S'il vous plaît lire [Comment demander] (http://stackoverflow.com/help/how-to-ask) une question sur SO. – BaCaRoZzo

+0

@BaCaRoZzo s'il vous plaît dites-moi comment analyser un json en qml! –

+0

Cela dépend de la réponse renvoyée. Cependant, vous pouvez accéder aux champs comme expliqué [ici] (http://supportforums.blackberry.com/t5/Native-Development/Parsing-a-JSON-in-QML/td-p/2648491). Si un champ est séparé par des virgules, utilisez 'split (',')'. – BaCaRoZzo

Répondre

1

Merci @BaCaRoZzo.

service web & parsing JSON:

function getCircle() { 
       var xmlhttp = new XMLHttpRequest(); 
       var url = "http://sb2.in/AppServices.asmx/getRecharge"; 

       xmlhttp.onreadystatechange=function() { 
        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
         circleFunction(xmlhttp.responseText); 

        } 
       } 
       xmlhttp.open("GET", url, true); 
       xmlhttp.send(); 
      } 
      function circleFunction(circleresponse){ 
       var circle = JSON.parse(circleresponse); 
       // console.log(circleresponse);// json 
       for (var k = 0; k< circle.length; k++) { 
        var circles = circle[k]; 
        console.log("CircleName"+circles.CircleID); 
        console.log("CircleName"+circles.CircleName); 

       } 
      } 

lien @BaCaRoZzo: Javascript how to parse JSON array

+0

merci @BaCaRoZzo –

1

Utilisez DataSource.

En haut de QML ajouter import bb.data 1.0

attachedObjects: [ 
    DataSource { 
     id: dataSource 
     source: "http://mywebsite.com" 
     type: DataSourceType.Json 

     onDataLoaded: { 
      //data is already parsed! 
      console.log("Data: " + JSON.stringify(data)); 
     } 
    } 
] 
onCreationCompleted: { 
    dataSource.load(); 
} 

Ajouter dans votre fichier .pro LIBS += -lbbdata