我一直在寻找这个问题,但是无法在SO或文档中的任何地方找到它。 我正在使用Gson解析json文件,并假设该文件是:
{
"animal":"cat",
"paws":"4",
"eyes":"2"
}
现在,由于所有字段都是字符串,我想将其解析为字符串数组,我想要这样的内容:
{"cat","4","2"}
我想解析JsonObject
,无论其标签的名称是什么,以及问题所在。我可以保证json只包含字符串,但我不清楚这些字段的名称。
有人遇到过这个问题吗?任何帮助都非常感谢,也有任何研究方向。
从回答中,我设法做到了这样:
for (Map.Entry<String, JsonElement> entry : object.entrySet()) {
// do your stuff here
}
中所述
答案 0 :(得分:1)
JSONObject
使用keys()
方法返回Iterator<String>
。通过迭代器,您可以检索与每个键关联的值。 Here文档
编辑:
由于您使用的是GSON
,因此您可以通过方法entrySet()
答案 1 :(得分:1)
您应该使用Iterator
,通过拨打.keys()
上的JSONObject
即可获得该org.json
。我觉得这样的事情应该有用(使用String[] output = new String[jsonObject.length()];
Iterator iterator = jsonObject.keys();
int i = 0;
while (iterator.hasNext()){
output[i++] = jsonObject.optString((String) iterator.next());
}
库):
GSON
编辑好的,如果是Set<Map.Entry<String, JsonElement>> set = jsonObject.entrySet();
String[] out = new String[set.size()];
int i = 0;
for (Map.Entry<String, JsonElement> x : set){
out[i++] = x.getValue().toString();
}
,就会出现这样的情况:
{{1}}
答案 2 :(得分:1)
如果您使用的是gson,那么简单的解决方案就是:
Type mapType = new TypeToken<Map<String, String>>(){}.getType();
Map<String, String> map = gson.fromJson(YOUR_JSON_STRING, mapType);
// get only values from map
Collection<String> values = map.values();
for (String string : values) {
// do your stuff here
}
结果值集合包含
[cat, 4, 2]
答案 3 :(得分:0)
JSONObject jsonObject = new JSONObject(parentJson.getJSONObject("objectname")
.toString());
Iterator<?> iter = jsonObject.keys();
while (iter.hasNext()) {
String key =(String) iter.next();
String value = jsonObject.getString(key);
}