2017-05-04 97 views
1

我从Web服务接收JSON数据,并且想将其转换为Java对象。方式很多,但是我没有找到任何可以处理变化的数组键,我在json中收到。将带有可变数组键的JSON转换为Java对象

JSON例如:

{ 
    "total": 2, 
    "last": "AAAI9Zgh", 
    "results": { 
     "67701510/2/1150671": { 
      "attributes": { 
       "200": "11444413213123", 
       "201": "Frank"  
      }, 
      "id": "67701510/2/1150671" 
     }, 
     "76701410/3/1330671": { 
      "attributes": { 
       "200": "11666613213123", 
       "201": "Mary" 
      }, 
      "id": "76701410/3/1330671" 
     } 
    } 
} 

结果有2个对象。每个对象的名称是对象的ID,因此它是可变的。 这样的方法

return new Gson()。fromJson(json,clazz);

不工作。

我想达到属性id数据在每个对象中。

任何人都可以提供一些方法来做到这一点?

+1

使用'Map '进行映射。 –

+1

太棒了!这样可行!请打开一个答案,以便我可以“+”它。 –

回答

1

那么如果您的JSON中有动态密钥,那么它们可以被映射为Map<String, Object>

假设您有一个包含结果属性的类Result,您只需在GSON映射中使用Map<String, Result>即可。

0

您可以使用杰克逊的Java库,并将JSON字符串转换为Java地图。

ObjectMapper mapper = new ObjectMapper() 
Map parsedJson = mapper.readValue(json,Map.class) 

然后,parsedJson变量将是包含解析的json的Map。

对不起,没有在GSON中展示的例子,我不太了解这个库。