解决JSONException重复键

我正在使用谷歌自定义搜索引擎,并以JSON格式获得结果。对于某些查询,JSON结果具有重复的键,因此它会产生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: u003cbu003eIndiau003c/bu003e -",
   "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发生多次


JSon对象与任何其他对象一样,不能具有两个具有相同名称的属性。 这与在地图上使用相同密钥两次的方式是非法的。

如果在一个对象中有两个具有相同名称的键,则JSONObject将引发异常。 您可能想要更改您的对象,以便在相同的对象下不会重复键。 可能将nickname视为一个数组。

你需要在问题中粘贴JSON对象。


如果你真的需要这个功能,请回滚到gson 1.6。 该版本允许使用重复密钥。


您可以使用Jackson库来解析JSON。 我会遇到和org.json的软件包一样的问题,但我转向杰克逊,并解决了它:http://wiki.fasterxml.com/JacksonHome

链接地址: http://www.djcxy.com/p/3405.html

上一篇: resolve JSONException duplicate keys

下一篇: How do I add comments to Json.NET output?