Java 无法构建此复杂的JSON结构
我有一个相互关联的地图,表示以下数据Java 无法构建此复杂的JSON结构,java,json,Java,Json,我有一个相互关联的地图,表示以下数据 { "Soft Drinks": { "Tin": [ { "Lean Apple": [ { "name": "1 Litre" }, {
{
"Soft Drinks": {
"Tin": [
{
"Lean Apple": [
{
"name": "1 Litre"
},
{
"name": "2 Litre"
}
]
},
{
"Clear": [
{
"name": "7 Litre"
},
{
"name": "10 Litre"
}
]
}
],
"Bottled": [
]
}
}
这是我的代码,以Java代码的形式表示上述json数据
包装试验
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
public class Post {
public static void main(String args[]) throws JSONException
{
LinkedList<String> forTinItemsList = new LinkedList<String>();
LinkedList<String> forBottleItemsList = new LinkedList<String>();
JSONObject jsonobj = new JSONObject();
Map<String,LinkedList<String>> categoryitemsMap = new LinkedHashMap<String,LinkedList<String>>();
forTinItemsList.add("Lean Apple");
forTinItemsList.add("Clear");
forBottleItemsList.add("Lemon");
forBottleItemsList.add("Clear");
categoryitemsMap.put("Tin", forTinItemsList);
categoryitemsMap.put("Bottled", forBottleItemsList);
// completion of Categories.
Map<String,LinkedList<String>> subcategory = new LinkedHashMap<String,LinkedList<String>>();
LinkedList<String> forLemonItems = new LinkedList<String>();
forLemonItems.add("1 Litre");
forLemonItems.add("2 Litre");
subcategory.put("Lemon", forLemonItems);
LinkedList<String> forClearItems = new LinkedList<String>();
forClearItems.add("7 Litre");
forClearItems.add("10 Litre");
subcategory.put("Clear", forClearItems);
for (Map.Entry<String, LinkedList<String>> entry : categoryitemsMap.entrySet())
{
String key = entry.getKey();
LinkedList<String> list = entry.getValue();
for(String value : list)
{
System.out.println(key+"\t"+value);
}
//jsonobj.put(entry, arg1);
}
}
}
import java.util.LinkedHashMap;
导入java.util.LinkedList;
导入java.util.Map;
导入org.json.JSONException;
导入org.json.JSONObject;
公营职位{
公共静态void main(字符串args[])抛出JSONException
{
LinkedList FortiniteSList=新建LinkedList();
LinkedList ForBattleItemsList=新建LinkedList();
JSONObject jsonobj=新的JSONObject();
Map categoryitemsMap=新建LinkedHashMap();
添加(“瘦苹果”);
添加(“清除”);
对于瓶装商品列表,添加(“柠檬”);
对于瓶装项目列表,添加(“清除”);
类别项目名称(“锡”,forTinItemsList);
类别项目列表(“瓶装”,用于瓶装项目列表);
//完成分类。
Map subcategory=新建LinkedHashMap();
LinkedList forLemonItems=新LinkedList();
对于柠檬酸盐,添加(“1升”);
对于柠檬酸盐,添加(“2升”);
子类别。放置(“柠檬”,用于柠檬石);
LinkedList forClearItems=新建LinkedList();
对于ClearItems,添加(“7升”);
对于ClearItems,添加(“10升”);
子类别。放置(“清除”,用于清除项目);
对于(Map.Entry:categoryitemsMap.entrySet())
{
String key=entry.getKey();
LinkedList=entry.getValue();
for(字符串值:列表)
{
System.out.println(键+“\t”+值);
}
//jsonobj.put(条目,arg1);
}
}
}
谁能告诉我如何构建上述JSON结构
我尝试了不同的东西,但我没有成功,我所面临的问题是,我得到的瓶装数组也充满了相同的罐数组项。有一些库可以为您这样做,并且可以让您了解如果您这样做的话,不神圣的东西会变成什么:下面是您必须创建的数据结构,以捕获您需要的JSON提议
Map<String, Map<String, List<Map<String, List<Map<String, String>>>>>> items;
地图项目;
所以,请随意实现这一点,但如果是我,我会构建一个数据模型,然后与Jackson进行映射。我正在使用org.json来实现这一点。GSON和Jackson有一个更成熟的api,使用它们比普通的ol jsonI可以改变库更容易,但是否有可能得到一个这样的工作示例。在过去的3个小时里,我一直在苦苦挣扎。你的代码片段显示瓶装的数据是空的。为了减少代码,我特意将瓶装的数据保持为空。它与你的java代码不匹配,您试图在java中实现的结构与在JSON中实现的结构不同,请您向我指出数据不匹配的地方??结构似乎不匹配。似乎
Tin
的值应该是以Lean Apple
和Clear
为键的对象。为什么要在这两者之间添加和额外的数组?