我如何使用org.json制作Java的JSON,看起来像下面的示例?
来源:爱站网时间:2021-09-16编辑:网友分享
因此,我尝试使用Java进行如下操作,但输出效果不是很好。在这些代码示例中,我尝试使用以下内容制作一个json文件:String name =“ usericals.json”; ...
问题描述
所以我尝试使用java进行如下操作,但是输出效果不是很好。
我尝试使用以下代码示例制作json文件:
String name = "usericals.json";
JSONObject jsonObj = new JSONObject();
JSONArray scene = new JSONArray();
JSONArray element = new JSONArray();
jsonObj.put("scene", scene);
for (int i = 0; i
我正在获取的JSON文件...
[
"scene",
{"element": [
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false"
]},
{"element": [
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false"
]},
{"element": [
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false"
]},
{"element": [
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false"
]},
{"element": [
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false",
"false"
]}
]
我想制作一个看起来像这样的json文件,但是我用正确的代码在数组之上创建的文件无法正确显示。有人有想法或建议吗?
我想要的JSON文件:
{
"scene": [
{
"id": 0,
"calendar_event": "urlaub",
"element": [
{
"anything": ""
},
{
"anything": ""
}
]
},
{
"id": 1,
"calendar_event": "urlauburlaub",
"element": [
{
"anything": ""
},
{
"anything": ""
}
]
},
{
"id": 2,
"calendar_event": "urlauburlauburlaub",
"element": [
{
"anything": ""
},
{
"device": "",
"anything": ""
}
]
},
{
"id": 3,
"calendar_event": "urlauburlauburlauburlaub",
"element": [
{
"anything": ""
},
{
"anything": ""
}
]
}
]
}
任何帮助将不胜感激。
思路一:
我建议为此使用库。杰克逊或GSON将是一个不错的选择。
您可以创建POJO,然后使用Jackson的ObjectMapper来代替按字段手动创建json字段。示例:
public class Car {
private String color;
private String type;
// standard getters setters
}
然后
ObjectMapper objectMapper = new ObjectMapper();
Car car = new Car("yellow", "renault");
objectMapper.writeValue(new File("target/car.json"), car);
哪个会给
{"color":"yellow","type":"renault"}
Google有很多杰克逊教程!
思路二:
[递归使用JSONObject。尝试这样的事情(我添加了一些额外的缩进,以便可以轻松阅读,但是在实际项目中最好使用函数):
JSONObject json = new JSONObject();
JSONArray scene = new JSONArray();
JSONObject node = new JSONObject();
node.put("id", 0);
node.put("calendar_event", "urlaub");
JSONArray element = new JSONArray();
JSONObject enode = new JSONObject();
enode.put("anything", "");
element.add(enode);
//...
node.put("element", element);
scene.add(node);
json.put("scene", scene);
//...
注意,您手动生成JSON,但是还有其他库可以扫描对象以生成JSON。根据您的需求,它可能会更容易一些,但请记住,进行此操作将使您负担所有费用,因为您将需要在内存中保留同一棵树的两个副本。使用普通的Java对象也可能处理层次结构。