如何使用java提供以下json输出
我试图使用java net.sf.json libs生成以下json输出,但没有成功 [ { “数据”:[ [ 1. 1. “文本” ], [ 2. 2. “文本” ], [ 3. 0, “文本” ], [ 5. 2. “文本” ] ], “标签”:“第一系列” } ] 我在这些论坛上读到过Gson是我前进的最佳选择。任何人都可以提供一个示例,说明如何使用Gson或其他合适的基于java的库生成此json 提前感谢如何使用java提供以下json输出,java,json,gson,Java,Json,Gson,我试图使用java net.sf.json libs生成以下json输出,但没有成功 [ { “数据”:[ [ 1. 1. “文本” ], [ 2. 2. “文本” ], [ 3. 0, “文本” ], [ 5. 2. “文本” ] ], “标签”:“第一系列” } ] 我在这些论坛上读到过Gson是我前进的最佳选择。任何人都可以提供一个示例,说明如何使用Gson或其他合适的基于java的库生成此json 提前感谢 import org.json.JSONObject; ... ... JS
import org.json.JSONObject;
...
...
JSONObject json = new JSONObject();
json.put("city", "Mumbai");
json.put("country", "India");
...
String output = json.toString();
Gson是一个Java库,可用于将Java对象转换为其JSON表示形式。它还可以用于将JSON字符串转换为等效的Java对象。Gson可以处理任意Java对象,包括您没有源代码的预先存在的对象
有几个开源项目可以将Java对象转换为JSON。但是,其中大多数都要求您在类中放置Java注释,如果您没有访问源代码的权限,这是无法做到的。大多数还不完全支持Java泛型的使用。Gson认为这两个都是非常重要的设计目标
import org.json.JSONObject;
...
...
JSONObject json = new JSONObject();
json.put("city", "Mumbai");
json.put("country", "India");
...
String output = json.toString();
我喜欢这个
从http://json.org/java/
还有杰索纳雷
对于这两个对象:
JSONArray inner = new JSONArray()
inner.add(1);inner.add("text");
JSONObject outer = new JSONObject();
outer.put("data",inner);
outer.put("label", "stuff");
String out = outer.toString()
使用如下Java对象很容易:
public class GsonTest {
private List<DataItem> data;
private String label;
public GsonTest() {} // for Gson
public GsonTest(List<DataItem> data, String label) {
this.data = data;
this.label = label;
}
// ...
}
public class DataItem {
private int val1;
private int val2;
private String text;
public DataItem() {} // for Gson
public DataItem(int val1, int val2, String text) {
this.val1 = val1;
this.val2 = val2;
this.text = text;
}
// ...
}
然后,您只需在创建Gson
实例时注册此转换器,就可以开始了!由于我们的DataItem
转换器也处理反序列化,因此您也可以将生成的JSON反序列化为列表
public static void testSerialization() {
List<DataItem> data = new ArrayList<DataItem>();
data.add(new DataItem(1, 1, "Text"));
data.add(new DataItem(2, 2, "Text"));
data.add(new DataItem(3, 0, "Text"));
data.add(new DataItem(5, 2, "Text"));
GsonTest test = new GsonTest(data, "First Series");
List<GsonTest> list = new ArrayList<GsonTest>();
list.add(test);
Gson gson = new GsonBuilder()
.registerTypeAdapter(DataItem.class, new DataItemConverter())
.create();
System.out.println(gson.toJson(list));
}
publicstaticvoidtestserialization(){
列表数据=新的ArrayList();
添加(新的数据项(1,1,“文本”);
添加(新的数据项(2,2,“文本”);
添加(新的数据项(3,0,“文本”);
添加(新的数据项(5,2,“文本”);
GsonTest测试=新的GsonTest(数据,“第一系列”);
列表=新的ArrayList();
列表。添加(测试);
Gson Gson=new GsonBuilder()
.registerTypeAdapter(DataItem.class,新DataItemConverter())
.create();
System.out.println(gson.toJson(list));
}
我试过这个,它成功了。我添加了更多的内部元素,以完全匹配我想要的json。非常感谢。
public static void testSerialization() {
List<DataItem> data = new ArrayList<DataItem>();
data.add(new DataItem(1, 1, "Text"));
data.add(new DataItem(2, 2, "Text"));
data.add(new DataItem(3, 0, "Text"));
data.add(new DataItem(5, 2, "Text"));
GsonTest test = new GsonTest(data, "First Series");
List<GsonTest> list = new ArrayList<GsonTest>();
list.add(test);
Gson gson = new GsonBuilder()
.registerTypeAdapter(DataItem.class, new DataItemConverter())
.create();
System.out.println(gson.toJson(list));
}