【问题标题】:How to change the json structure created by Gson in javajava中如何改变Gson创建的json结构
【发布时间】:2015-10-08 06:26:57
【问题描述】:

由Gson创建的对象列表的json看起来像。

"[[{"id":1,"name":"Shepherd"}],[{"id":2,"name":"Bull"}]]"

但我希望它看起来像

"[{'id':1,'name':'Shepherd'},{'id':2,'name':'Bull'}]"

我使用这样的 Gson 库创建了这个 json。

class Dog{
long id;
String name;
}

ArrayList<Dog> myDogs= new ArrayList<Dog>();
ArrayList<Object> objects = new ArrayList<Object>();
objects = Application.getApplication.query(Object.class, " from Dog", 0, 0);
//Fetching data through HQL
myDogs=(ArrayList<Dog>)objects;
String jsonStr = new Gson().toJson(myDogs);

我想要这个特定的结构化json,以便它通过使用直接转换为Dog类型的RealmList。

 realm.createOrUpdateAllFromJson(Dog.class, jsonStr);

【问题讨论】:

  • Gson 将创建第二个列表,因此您的代码中一定有您没有显示的问题。添加(some initialization)的代码。
  • 好的。让我编辑我的帖子
  • 感谢您的宝贵时间。问题正是冰所说的。

标签: java json gson realm realm-list


【解决方案1】:

您从query 获得的信息类似于List&lt;List&lt;Dog&gt;&gt; 你需要List&lt;Dog&gt;来获取你想要的JSON,试试这个变种

ArrayList<Object> objects = new ArrayList<Object>();
objects = Application.getApplication.query(Object.class, " from Dog", 0, 0);
//Fetching data through HQL
myDogs=(ArrayList<List<Dog>)objects;
String jsonStr = new Gson().toJson(Iterables.concat(myDogs));

http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Iterables.html#concat(java.lang.Iterable)

【讨论】:

  • 这是我问题的完美答案。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
相关资源
最近更新 更多