奇抜なjson構造解析--keyはデジタルのjson処理である
5428 ワード
json構造は以下の通りである.
「data」の下の数字の部分はlistで、構造は同じですが、数字は変化する可能性があります.会社の業務のため、バックグラウンドで数字の部分の内容を統一することはできません.この構造は卵が痛いです.gsonという直接的な処理を直接利用することはできず,gsonformat生成もparse errとなる.
しかし、仕事をしなければなりません.問題は解決しなければなりません.どのように解決しますか.
次のような解決策は,赤色の部位に注意し,数字に対応するvaluseの内容を処理し,gsonを用いて解析することである.
{
"ret": "ok",
"data": {
"57230": {
"cat_id": "57230",
"alpha": "",
"title": " - ",
"malpha": "Y",
"catpid": "57229",
"catType": "2",
"child": [
{
"cat_id": "57233",
"alpha": "A",
"title": " Q5",
"malpha": null,
"catpid": "57230",
"catType": "3",
"Priced": false
},
{
"cat_id": "126193",
"alpha": "A",
"title": " Q3",
"malpha": null,
"catpid": "57230",
"catType": "3",
"Priced": false
},
{
"cat_id": "126537",
"alpha": "A",
"title": " A3",
"malpha": null,
"catpid": "57230",
"catType": "3",
"Priced": false
},
{
"cat_id": "57231",
"alpha": "A",
"title": " A4L",
"malpha": null,
"catpid": "57230",
"catType": "3",
"Priced": false
},
{
"cat_id": "57232",
"alpha": "A",
"title": " A6L",
"malpha": null,
"catpid": "57230",
"catType": "3",
"Priced": true
}
]
},
"success": true
}
}
「data」の下の数字の部分はlistで、構造は同じですが、数字は変化する可能性があります.会社の業務のため、バックグラウンドで数字の部分の内容を統一することはできません.この構造は卵が痛いです.gsonという直接的な処理を直接利用することはできず,gsonformat生成もparse errとなる.
しかし、仕事をしなければなりません.問題は解決しなければなりません.どのように解決しますか.
次のような解決策は,赤色の部位に注意し,数字に対応するvaluseの内容を処理し,gsonを用いて解析することである.
if ( !isNull( response ) )
{
try {
JSONObject jsonObject0 = new JSONObject(
response.trim() );
JSONObject jsonObject = new JSONObject(
JsonUtil.getString( jsonObject0, "data" ) );
boolean isSuccess = JsonUtil.getBoolean( jsonObject,
"success" );
childEntities.clear();
if ( isSuccess )
{
Iterator<?> keys = jsonObject.keys(); while ( keys.hasNext() ) { String key = (String) keys.next(); if ( jsonObject.get( key ) instanceof JSONObject ) { String content = jsonObject.get( key ) .toString();
PriceManagerResult.DataEntity.ChildEntity
childEntity = Json.get()
.toObject( content,
PriceManagerResult.DataEntity.ChildEntity.class );
childEntities.add( childEntity );
}
}
}
KLog.i( childEntities.size() );
mPriceManagerAdapter2.notifyDataSetChanged();
} catch ( JSONException e ) {
e.printStackTrace();
}
}