我有一个jsonobject
JsonObject jsonObject = {"keyInt":2,"keyString":"val1","id":"0123456"}
每 JsonObject
包含 "id"
项,但其他键/值对的数目尚未确定,因此我要创建一个具有2个属性的对象:
class myGenericObject {
Map<String, Object> attributes;
String id;
}
所以我希望我的属性Map像这样:
"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?",
}
5条答案
按热度按时间beq87vna1#
我不太清楚你为什么首先要做手工操作。gson decode将把那些缺少的键/值对作为默认值(零,null)。然后你就可以随心所欲了。
4szc88ey2#
将“”替换为空白。
nkhmeac63#
只需做以下更改。。。
“getasstring”将为你带来魔力
6gpjuf904#
如何创建jsonobject?你的代码对我有用。想想这个
而且效果很好。现在我想知道你是如何创建json的?
你也可以试试这个(jsonobject)
qvtsj1bj5#
你的Map值是
JsonElement
s。无论何时打印JsonElement
(例如使用调试器)它的toString()
方法将被调用-并且JsonElement
默认情况下有许多实现类toString
实现将值用引号括起来,以确保json正确。以正常方式获取值,展开String
,只需呼叫getAsString()
:以您的例子:
注意,还有许多其他方法可以在
JsonElement
生产其他类型的产品。