2011-02-06 22 views
3

私はGoogleのカスタム検索エンジンを使用して特定のクエリformat.for JSONで結果を取得しています、JSONの結果は、重複キーを持っているので、それがJSONException生成:重複キー「ニックネーム」など。解決JSONException重複キー

私はJAVAを使用しています。

String str=//contains the query result in json format 
JSONObject ob=new JSONObject(str) produces the exception 

この例外を解決する方法はありますか。ここ

は、JSON応答である:

{ 
    "kind": "customsearch#result", 
    "title": "The World Factbook: India - CIA - The World Factbook", 
    "htmlTitle": "The World Factbook: \u003cb\u003eIndia\u003c/b\u003e -", 
    "link": "https://www.cia.gov/library/publications/the-world-factbook/geos/in.html", 
    "displayLink": "www.cia.gov", 
    "snippet": "Jan 20, 2011 ... Features a map and brief descriptions of geography", 
    "htmlSnippet": "Jan 20, 2011 \u003", 
    "cacheid": "0n2U45w_dvkJ", 
    "pagemap": { 
    "metatags": [ 
    { 
     "il.secur.classif": "UNCLASSIFIED", 
     "il.title": "(U) CIA The World Factbook", 
     "il.summary": "CIA - The World Factbook", 
     "il.cutdate": "20040101", 
     "il.secur.classif": "UNCLASSIFIED", 
     "il.title": "(U) CIA The World Factbook", 
     "il.cutdate": "20040101", 
     "il.secur.classif": "UNCLASSIFIED", 
     "il.pubdate": "20040101", 
     "il.postdate": "20040501", 
     "il.cutdate": "20040101" 
    } 
    ] 
    } 
    } 

ここil.secur.classifが複数回

+1

'il.secur.classif'、' il.title'、 'il.cutdate'は繰り返される。 JSONは間違っています! – Nishant

答えて

7

JSONオブジェクトを発生し、他のオブジェクトと同様、同じ名前の2つの属性を持つことはできません。マップ内で同じキーを2回使用するのと同じように違法です。

1つのオブジェクトに同じ名前のキーが2つある場合、JSONObjectは例外をスローします。キーが同じオブジェクトの下で繰り返されないようにオブジェクトを変更することができます。おそらくnicknameを配列として考えてください。

質問にJSONオブジェクトを貼り付ける必要があります。

0

本当にこの機能が必要な場合は、gson 1.6にロールバックしてください。そのバージョンでは重複キーが許可されています。

0

JSONを解析するためにJacksonライブラリを利用することができます。私はorg.jsonのパッケージと同じタスクを実行することに問題がありましたが、私はJacksonに目を向けて解決しました:http://wiki.fasterxml.com/JacksonHome

+0

リンクが壊れていますか? –

+1

はい、[こちら](https://github.com/FasterXML/jackson/wiki/Jackson-Release-2.9)をチェックしてください – russellhoff

関連する問題