我需要使用以下结构创建新的json文件我无法成功,因为我在结构/数组中有结构,文件应该如下所示: 任何想法如何创建这样的?
{
"Entry1": [
{
"id": "0001",
"type": "USER",
},
{
"id": "0002",
"type": "EMP",
"property":"Salery",
}
],
"Entry2": [
{
"id": "0005",
"name": "Vacation",
"property":"user",
},
{
"id": "0008",
"name": "Work",
}
]
}
我试图使用以下代码但没有成功。
JSONObject obj = new JSONObject();
obj.put("entry1", null);
JSONArray list = new JSONArray();
list.add("id");
list.add("USER");
...
答案 0 :(得分:2)
尝试google gson项目。它有一个简单的方法来对抗&来自物体。并不重要。支持所有馆藏。
[https://code.google.com/p/google-gson/] [1]
答案 1 :(得分:2)
使用Jackson。使用它创建任意JSON值非常简单:
final JsonNodeFactory factory = JsonNodeFactory.instance;
final ObjectNode baseNode = factory.objectNode();
ArrayNode array;
ObjectNode element1, element2;
// create elements
element1 = factory.objectNode();
element1.put("id", whatever);
// etc, then
array = factory.arrayNode();
array.add(element1);
array.add(element2);
baseNode.put("Entry1"), array;
// etc; then print baseNode.toString() in the file
它还可以通过智能猜测对POJO的{de,}序列化提供出色的支持,因此您甚至可以在不使用任何注释的情况下反序列化POJO列表(请参阅ObjectMapper
)。
答案 2 :(得分:2)
[更新] 我已经编辑了我的答案,因为它应该返回不同的json。我不知道这是否是最佳解决方案,但它有效,而且阅读和维护也很清楚。
根据Anand的回答,这是一个使用Gson的简单示例。我认为这是一个很好的解决方案,因为您需要做的就是创建POJO并使用Gson / Jackson将其序列化为json。您不需要手动创建json对象。
JsonTest主类:
import java.util.ArrayList;
import com.google.gson.Gson;
public class JsonTest {
public static void main(String[] main) {
Entry entry1 = new Entry();
entry1.setId(1);
entry1.setType("USER");
entry1.setProperty("Salary");
Entry entry2 = new Entry();
entry2.setId(2);
entry2.setType("EMP");
Entry entry3 = new Entry();
entry3.setId(2);
entry3.setType("EMP");
entry3.setProperty("Work");
Entry entry4 = new Entry();
entry4.setId(2);
entry4.setType("EMP");
EntryListContainer entryListContainer = new EntryListContainer();
ArrayList<Entry> entryList1 = new ArrayList<Entry>();
ArrayList<Entry> entryList2 = new ArrayList<Entry>();
entryList1.add(entry1);
entryList1.add(entry2);
entryList2.add(entry3);
entryList2.add(entry4);
entryListContainer.setEntryList1(entryList1);
entryListContainer.setEntryList2(entryList2);
String json = new Gson().toJson(entryListContainer, EntryListContainer.class);
System.out.println(json);
}
}
EntryListContainer类:
import java.util.ArrayList;
import com.google.gson.annotations.SerializedName;
public class EntryListContainer {
@SerializedName("Entry1")
private ArrayList<Entry> entryList1;
@SerializedName("Entry2")
private ArrayList<Entry> entryList2;
public void setEntryList1(ArrayList<Entry> entryList1) {
this.entryList1 = entryList1;
}
public ArrayList<Entry> getEntryList1() {
return entryList1;
}
public void setEntryList2(ArrayList<Entry> entryList2) {
this.entryList2 = entryList2;
}
public ArrayList<Entry> getEntryList2() {
return entryList2;
}
}
进入POJO:
public class Entry {
private int id;
private String type;
private String property;
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setType(String type) {
this.type = type;
}
public String getType() {
return type;
}
public String getProperty() {
return property;
}
public void setProperty(String property) {
this.property = property;
}
}
它会返回这个json:
{
"Entry1":[
{
"id":1,
"type":"USER",
"property":"Salary"
},
{
"id":2,
"type":"EMP"
}
],
"Entry2":[
{
"id":2,
"type":"EMP",
"property":"Work"
},
{
"id":2,
"type":"EMP"
}
]
}