Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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映射到JSON_Java_Json - Fatal编程技术网

Java映射到JSON

Java映射到JSON,java,json,Java,Json,首先,我是Java新手,所以请善待我:-) 我有一个映射,我想解析为JSON对象: private static final Map<String, Queue<String>> myMap = new HashMap<String, Queue<String>>(); 我曾经尝试过使用JSONObject或ObjectMapper,但没有成功。我在找一些提示/建议 谢谢,按照您现在的方式,将Map解析为有效的JSON将意味着您将得到如下结果:

首先,我是Java新手,所以请善待我:-)

我有一个映射,我想解析为JSON对象:

private static final Map<String, Queue<String>> myMap = new HashMap<String, Queue<String>>();
我曾经尝试过使用JSONObject或ObjectMapper,但没有成功。我在找一些提示/建议


谢谢,

按照您现在的方式,将
Map
解析为有效的JSON将意味着您将得到如下结果:

{
  queueOne: {
    itemOne: 'item one',
    itemTwo: 'item two'
  },
  queueTwo: {
    itemOne: 'item one',
    itemTwo: 'item two'
  }
}

如果只有一个队列,则无需将其放入映射中。如果有多个,您必须迭代映射,从队列中创建一个JSONArray,然后将字符串作为键,队列作为值的JSONObject放入主JSONArray中。

这很奇怪,但是您的示例中从未使用映射的键

完整的例子是:

{
  "key":{
    "item2":"SecondItemOnTheQueue",
    "item1":"FirstItemOnTheQueue",
    "item3":"ThirdItemOnTheQueue"
  }
}
Java代码如下:

import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Queue;

import org.json.JSONObject;

public class App {
    public static void main(String[] args) {
        Map<String, Queue<String>> map = new HashMap<String, Queue<String>>();

        map.put("key", new LinkedList<String>(){{
            add("FirstItemOnTheQueue");
            add("SecondItemOnTheQueue");
            add("ThirdItemOnTheQueue");
        }});

        System.out.println(generateFromMapOfQueues(map));
    }

    private static JSONObject generateFromMapOfQueues(Map<String, Queue<String>> map) {
        JSONObject result = new JSONObject(); 


        for(String key : map.keySet()){
            JSONObject queueJson = new JSONObject();
            int initSize = map.get(key).size();
            for (int i = 0; i < initSize; i++) {
                queueJson.append("item" + (i + 1), map.get(key).poll());
            }
            result.put(key, queueJson);
        }

        return result;
    }
}
import java.util.HashMap;
导入java.util.LinkedList;
导入java.util.Map;
导入java.util.Queue;
导入org.json.JSONObject;
公共类应用程序{
公共静态void main(字符串[]args){
Map Map=newhashmap();
map.put(“key”,新LinkedList()){{
添加(“FirstItemOnTheQueue”);
添加(“第二项请求”);
添加(“ThirdItemOnTheQueue”);
}});
System.out.println(generateFromMapOfQueues(map));
}
私有静态JSONObject GenerateFrommApoFQUES(映射){
JSONObject结果=新建JSONObject();
for(字符串键:map.keySet()){
JSONObject queueJson=新的JSONObject();
int initSize=map.get(key.size();
对于(int i=0;i

完成后的映射将包含空队列。。。这是唯一的问题。

首先,您的JSON表示示例不正确。其次,是否希望
队列中的值
成为键的值?
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.Queue;

import org.json.JSONObject;

public class App {
    public static void main(String[] args) {
        Map<String, Queue<String>> map = new HashMap<String, Queue<String>>();

        map.put("key", new LinkedList<String>(){{
            add("FirstItemOnTheQueue");
            add("SecondItemOnTheQueue");
            add("ThirdItemOnTheQueue");
        }});

        System.out.println(generateFromMapOfQueues(map));
    }

    private static JSONObject generateFromMapOfQueues(Map<String, Queue<String>> map) {
        JSONObject result = new JSONObject(); 


        for(String key : map.keySet()){
            JSONObject queueJson = new JSONObject();
            int initSize = map.get(key).size();
            for (int i = 0; i < initSize; i++) {
                queueJson.append("item" + (i + 1), map.get(key).poll());
            }
            result.put(key, queueJson);
        }

        return result;
    }
}