Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用java提供以下json输出_Java_Json_Gson - Fatal编程技术网

如何使用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

我试图使用java net.sf.json libs生成以下json输出,但没有成功

[ { “数据”:[ [ 1. 1. “文本” ], [ 2. 2. “文本” ], [ 3. 0, “文本” ], [ 5. 2. “文本” ] ], “标签”:“第一系列” } ]

我在这些论坛上读到过Gson是我前进的最佳选择。任何人都可以提供一个示例,说明如何使用Gson或其他合适的基于java的库生成此json

提前感谢

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));
}