我有一个包含其他对象列表的json对象,希望在java的HashMap中转换它
这是json,我想转换成HashMap `我有一个包含其他对象列表的json对象,希望在java的HashMap中转换它,java,Java,这是json,我想转换成HashMap ` ob=”{ “抵达”:“RONGO”, “价格”:[ { “id”:“, “localId”:“, “localCode”:“”, “本地名称”:“, “金额”:[ { “价值”:950, “货币”:“Ksh” } ] } ] } "; Gson Gson=新的Gson(); HashMap result=new ObjectMapper().readValue(gson.toJson(ob),HashMap.class); ` 但我无法访
ob=”{
“抵达”:“RONGO”,
“价格”:[
{
“id”:“,
“localId”:“,
“localCode”:“”,
“本地名称”:“,
“金额”:[
{
“价值”:950,
“货币”:“Ksh”
}
]
}
]
} ";
Gson Gson=新的Gson();
HashMap result=new ObjectMapper().readValue(gson.toJson(ob),HashMap.class);
`
但我无法访问对象,
result.get(“amounts”)的值为空
有人可以帮我吗?使用gson 2.0,您可以将json解析为HashMap和access array:
public static void main(String[] args) throws IOException {
Gson gson = new Gson();
HashMap<String, Object> map = gson.fromJson(new FileReader("test.json"), HashMap.class);
ArrayList<Object> prices = (ArrayList<Object>) map.get("segmentPrices");
prices.forEach(p -> {
if (p instanceof LinkedHashMap) {
System.out.println(((LinkedHashMap)p).get("amounts"));
}
});
}
您可以访问金额数组中对象内部的参数,如下所示:
public static void main(String[] args) throws IOException {
Gson gson = new Gson();
HashMap<String, Object> map = gson.fromJson(new FileReader("test.json"), HashMap.class);
ArrayList<Object> prices = (ArrayList<Object>) map.get("segmentPrices");
prices.forEach(p -> {
if (p instanceof LinkedHashMap) {
ArrayList<Object> amounts = (ArrayList<Object>) (((LinkedHashMap)p).get("amounts"));
amounts.forEach(amount -> {
System.out.println(((HashMap<String,Object>)amount).get("value"));
});
}
});
}
您将需要javason库,如果您需要提取value的值,这就是您可以做的
String ob = "{\n"
+ " \"arrival\": \"RONGO\",\n"
+ " \"segmentPrices\": [\n"
+ " {\n"
+ " \"id\": \"\",\n"
+ " \"localId\": \"\",\n"
+ " \"localCode\": \"\",\n"
+ " \"localDesignation\": \"\",\n"
+ " \"amounts\": [\n"
+ " {\n"
+ " \"value\": 950,\n"
+ " \"currency\": \"Ksh\"\n"
+ " }\n"
+ " ]\n"
+ " }\n"
+ " ]\n"
+ " } ";
JSONObject json = new JSONObject(ob.toString());
System.out.println(json.getJSONArray("segmentPrices").getJSONObject(0).getJSONArray("amounts").getJSONObject(0).get("value"));
您使用什么版本的gson?
public static void main(String[] args) throws IOException {
Gson gson = new Gson();
HashMap<String, Object> map = gson.fromJson(new FileReader("test.json"), HashMap.class);
ArrayList<Object> prices = (ArrayList<Object>) map.get("segmentPrices");
prices.forEach(p -> {
if (p instanceof LinkedHashMap) {
ArrayList<Object> amounts = (ArrayList<Object>) (((LinkedHashMap)p).get("amounts"));
amounts.forEach(amount -> {
System.out.println(((HashMap<String,Object>)amount).get("value"));
});
}
});
}
950.0
String ob = "{\n"
+ " \"arrival\": \"RONGO\",\n"
+ " \"segmentPrices\": [\n"
+ " {\n"
+ " \"id\": \"\",\n"
+ " \"localId\": \"\",\n"
+ " \"localCode\": \"\",\n"
+ " \"localDesignation\": \"\",\n"
+ " \"amounts\": [\n"
+ " {\n"
+ " \"value\": 950,\n"
+ " \"currency\": \"Ksh\"\n"
+ " }\n"
+ " ]\n"
+ " }\n"
+ " ]\n"
+ " } ";
JSONObject json = new JSONObject(ob.toString());
System.out.println(json.getJSONArray("segmentPrices").getJSONObject(0).getJSONArray("amounts").getJSONObject(0).get("value"));