Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我有一个包含其他对象列表的json对象,希望在java的HashMap中转换它_Java - Fatal编程技术网

我有一个包含其他对象列表的json对象,希望在java的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); ` 但我无法访

这是json,我想转换成HashMap `

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"));