0

最初の JSON

{value:[{"sk_service":"1","hour":"0","sum(transaction)":"1636"}]}

2 番目の JSON

{value:[{"sk_service":"1","month":"04","sum(transaction)":"19572"}]}

次に、jsonから属性を知るためにこれを行います

String a= JSONArray.getJSONObject(0).names().getString(0); //0
String b= JSONArray.getJSONObject(0).names().getString(1); //1

結果 :

最初のjson

a = sum(transaction) //index 0.
b = hour         //index 1. 

2番目のjson

a = month       //index 0.
b = sum(transaction)    //index 1.

最初の json と 2 番目の json の間で結果が一致しないのはなぜですか?

4

2 に答える 2

0

あなたがちょうど混乱している可能性はありますか?

String a= JSONArray.getJSONObject(0).names().getString(0); 
String b= JSONArray.getJSONObject(1).names().getString(0);

getJSONObject()JSONオブジェクトを返します。コードでは、同じJSONオブジェクトを使用しているようです。

getString()そのインデックスに一致する文字列を返します。各JSONの最初の要素が必要であると仮定すると、どちらの場合も0を指定しません

于 2012-05-15T02:33:26.100 に答える
0

JSON : JavaScript Object Notation - オブジェクトとして扱い、プロパティに明示的にアクセスできます。

これでうまくいくはずです:

var data = new Array();

for(var index = 0; index < JSONArray.length; index++){
    data.push(eval("(" + JSONArray.getJSONObject(index) + ")"));
}

これで、データを明示的に取得できる配列ができました。

data[0].value["sk_service"] will give you "1"
data[1].value["month"] will give you "04"
data[0].value["sum(transaction)"] will give you "1636"

JSON をリファクタリングすることをお勧めします。

2 番目の JSON

{value:[{"sk_service":"1","period":"month","duration":"4","transactionSum":"19572"}]}

period プロパティと duration プロパティを導入するとコードが簡素化され、後で名前sum(transaction)をに変更するtransactionSumと、後の混乱を避けることができます。

于 2012-05-15T02:24:16.310 に答える