Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
Java 如何转换LinkedHashMap<;字符串,列表<;节点>&燃气轮机;变成一个JSONObject?_Java_Json_Linkedhashmap_Jsonconvert - Fatal编程技术网

Java 如何转换LinkedHashMap<;字符串,列表<;节点>&燃气轮机;变成一个JSONObject?

Java 如何转换LinkedHashMap<;字符串,列表<;节点>&燃气轮机;变成一个JSONObject?,java,json,linkedhashmap,jsonconvert,Java,Json,Linkedhashmap,Jsonconvert,我是JSONObject的新手,我正在尝试将LinkedHashMap转换为json文件。 地图的结构如下所示: "element_one", {Node1, Node2, etc...} "element_two", {Node1, Node2, etc...} 每个节点都有两个属性:值和标签 我想要的是这样的东西: { "element_one": [ { "items": [ { "value": "1", "label": "Donald" }, {

我是JSONObject的新手,我正在尝试将LinkedHashMap转换为json文件。 地图的结构如下所示:

"element_one", {Node1, Node2, etc...}
"element_two", {Node1, Node2, etc...}
每个节点都有两个属性:值和标签

我想要的是这样的东西:

{
"element_one": [
{
"items": [
  {
    "value": "1",
    "label": "Donald"
  },
  {
    "value": "2",
    "label": "Goofy"
  }]
}],

"element_two": [
{
"items": [
  {
    "value": "1",
    "label": "Peter"
  },
  {
    "value": "2",
    "label": "Wendy"
  }]
}}
我正在使用JSONObject,我在不同的线程中寻找解决方案,但没有任何帮助。我知道这是一个分词问题,但我需要这个数据结构的结果

难点在于在映射中循环nodes元素,而不覆盖已经插入到JSONObject中的元素


谢谢。

GSON库将帮助您将对象转换为JSON

Gson gson = new Gson();
String json = gson.toJson(myMap,LinkedHashMap.class);
Maven依赖关系

<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>

com.google.code.gson
格森
2.8.5

您可以使用
LinkedHashMap
转换为
JsonObject

static JsonObject toItems(List<Node> nodes) {
    return nodes
            .stream()
            .map(node ->
                    Json.createObjectBuilder()
                            .add("value", node.getValue())
                            .add("label", node.getLabel())
           ).collect(
                    Collector.of(
                            Json::createArrayBuilder,
                            JsonArrayBuilder::add,
                            JsonArrayBuilder::addAll,
                            jsonArrayBuilder ->
                                    Json.createObjectBuilder()
                                            .add("items", jsonArrayBuilder)
                                            .build()
                    )
            );
}
节点
-类(例如):

toItems
-方法将值(List)=>映射到构建器的节点,并使用自定义收集器(
collector.of(…)
)将它们收集到“项”
JsonObject

static JsonObject toItems(List<Node> nodes) {
    return nodes
            .stream()
            .map(node ->
                    Json.createObjectBuilder()
                            .add("value", node.getValue())
                            .add("label", node.getLabel())
           ).collect(
                    Collector.of(
                            Json::createArrayBuilder,
                            JsonArrayBuilder::add,
                            JsonArrayBuilder::addAll,
                            jsonArrayBuilder ->
                                    Json.createObjectBuilder()
                                            .add("items", jsonArrayBuilder)
                                            .build()
                    )
            );
}

我结合JSONArray和JSONObject类解决了这个问题

我已经为所有节点使用循环创建了主对象:

for (Node node : nodeList)
{
  try
  {
     JSONObject obj = new JSONObject();
     obj.put("value", node.getValue());
     obj.put("label", node.getLabel());
     jsonArrayOne.put(obj)
  }
  catch (JSONException e)
  {
     log.info("JSONException");
  }
}
然后将jsonArrayOne放入jsonObject中:

jsonObjOne.put("items", jsonArrayOne);
jsonObjTwo.put(element, jsonArrayTwo);
把这个jsonObjOne放到jsonArray中:

jsonArrayTwo.put(jsonObjOne);
将此jsonArrayTwo放入jsonObject中:

jsonObjOne.put("items", jsonArrayOne);
jsonObjTwo.put(element, jsonArrayTwo);
最后将这个jsonObjTwo放入jsonArrayFinal

jsonArrayFinal.put(jsonObjTwo);
最后,我将jsonArrayFinal转换为字符串:

jsonArrayFinal.toString();