Java映射到JSON
首先,我是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将意味着您将得到如下结果:
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;
}
}