【发布时间】:2015-03-13 21:49:08
【问题描述】:
我有一个 JsonObject 例如
JsonObject jsonObject = {"keyInt":2,"keyString":"val1","id":"0123456"}
每个JsonObject 包含一个"id" 条目,但其他键/值对的数量未确定,因此我想创建一个具有2个属性的对象:
class myGenericObject {
Map<String, Object> attributes;
String id;
}
所以我希望我的属性映射如下所示:
"keyInt" -> 4711
"keyStr" -> "val1"
我找到了这个解决方案
Map<String, Object> attributes = new HashMap<String, Object>();
Set<Entry<String, JsonElement>> entrySet = jsonObject.entrySet();
for(Map.Entry<String,JsonElement> entry : entrySet){
attributes.put(entry.getKey(), jsonObject.get(entry.getKey()));
}
但是值被""包围
"keyInt" -> "4711"
"keyStr" -> ""val1""
如何获取普通值(4711 和 "val1")?
输入数据:
{
"id": 0815,
"a": "a string",
"b": 123.4,
"c": {
"a": 1,
"b": true,
"c": ["a", "b", "c"]
}
}
或
{
"id": 4711,
"x": false,
"y": "y?",
}
【问题讨论】:
-
是的,我可以剪掉第一个和最后一个字符 ("),但这将是一个可悲的解决方案(或者不是?)
标签: java json gson json-deserialization