Titanium Appcelerator - 以相反的顺序获取JSON

时间:2012-01-16 11:57:31

标签: javascript json parsing titanium-mobile

我有一个JSON,例如:(服务器端)

myJSON = {
       "details":[
           {"ui":"3"},
           {"vi":"7"},
           {"p" :"c:\"}
       ],
       "flowers":[
           {"bla"},
           {"bla"},
           {"bla"},
       ],
       "examples":[
       ]
};

现在在Titanium我正在拉这个JSON:

var xhr = Ti.Network.createHTTPClient();
    xhr.onerror = function(e){
                  Ti.API.error('Bad Server =>' + e.error);
          }

    xhr.open('POST', 'http://.....');
    xhr.send();

    xhr.onload = function(){
                 response = JSON.parse(this.responseText);
             }

现在,当我试图提醒“响应”值时,我看到类似这样的事情:

 myJSON = {
       "examples":[
       ],
       "flowers":[
           {"bla"},
           {"bla"},
           {"bla"},
       ],
       "details":[
           {"ui":"3"},
           {"vi":"7"},
           {"p" :"c:\"}
       ],
};

有人能告诉我为什么会逆转吗?

1 个答案:

答案 0 :(得分:3)

在JSON(或JavaScript文字表示法或一般的JavaScript对象)中,属性的顺序无法保证或显着。这些对象是等价的:

{
   "one": 1,
   "two": 2
}

{
   "two": 2,
   "one": 1
}

(您还需要转义\中的{"p" :"c:\"},例如:{"p" :"c:\\"}。)

要维护订单,您必须使用数组,就像使用detailsflowers值一样(请注意它们没有被反转)。

另外,请注意您所引用的不是JSON。赠品是myJSON = ...的开头。您引用的是使用JavaScript对象文字表示法(例如,对象初始值设定项)的赋值语句,用于右侧。