需要GSON返回一个javajsonarray
我无法返回JSONArray,相反,我的对象似乎是字符串。myArray的值与jsonString的值相同。该对象是字符串对象,而不是JSONArray。以及jsonString和myArray prnt: 如何将其转换为实际的JavaJSONArray?谢谢需要GSON返回一个javajsonarray,java,json,gson,Java,Json,Gson,我无法返回JSONArray,相反,我的对象似乎是字符串。myArray的值与jsonString的值相同。该对象是字符串对象,而不是JSONArray。以及jsonString和myArray prnt: 如何将其转换为实际的JavaJSONArray?谢谢 //arrPersons is an ArrayList Gson gson = new Gson(); String jsonString = gson.toJson(arrPer
//arrPersons is an ArrayList
Gson gson = new Gson();
String jsonString = gson.toJson(arrPersons);
JsonParser parser = new JsonParser();
JsonElement myElement = parser.parse(jsonString);
JsonArray myArray = myElement.getAsJsonArray();
publicjsonarray getMessage(字符串响应){
ArrayList arrPersons=新的ArrayList();
试一试{
//获得响应
JSONObject jsonResponse=新的JSONObject(响应);
//获取数组
JSONArray persons=jsonResponse.optJSONArray(“数据”);
//迭代数组并检索单人实例
对于(int i=0;i我认为您可以做您想做的事情,而无需写出json字符串,然后重新读取它:
List<Person> arrPersons = new ArrayList<Person>();
// populate your list
Gson gson = new Gson();
JsonElement element = gson.toJsonTree(arrPersons, new TypeToken<List<Person>>() {}.getType());
if (! element.isJsonArray()) {
// fail appropriately
throw new SomeException();
}
JsonArray jsonArray = element.getAsJsonArray();
List arrperson=new ArrayList();
//填充您的列表
Gson Gson=新的Gson();
JsonElement元素=gson.toJsonTree(arrPersons,newtypetoken(){}.getType());
如果(!element.isJsonArray()){
//适当地失败
抛出新的SomeException();
}
JsonArray JsonArray=element.getAsJsonArray();
这不可能是对的。getAsJsonArray()返回一个JSONArray。Java是静态类型的,如果myArray不是真正的JSONArray,您上面写的东西将不会编译。这是我的问题的一部分。Gson JSONArray对象不同于Java JSONArray对象。我想创建一个JSONArray。?没有Java JSONArray对象。您是说JSONArray来自?如果您使用的是Gs关于,为什么要为json.org的东西而烦恼呢?嗨,Max,这是我的第一个Java项目,所以请原谅我忽略了JSONArray不是Java对象。我确实找到了如何完成我的任务,获取JSONArray并按“名称”按字母顺序排列元素。我在下面发布了代码。路径是JSONArray--ArrayList--sort list--通过GSON返回JSONArray。不过我很想知道更好的方法。谢谢!
public JSONArray getMessage(String response){
ArrayList<Person> arrPersons = new ArrayList<Person>();
try {
// obtain the response
JSONObject jsonResponse = new JSONObject(response);
// get the array
JSONArray persons=jsonResponse.optJSONArray("data");
// iterate over the array and retrieve single person instances
for(int i=0;i<persons.length();i++){
// get person object
JSONObject person=persons.getJSONObject(i);
// get picture url
String picture=person.optString("picture");
// get id
String id=person.optString("id");
// get name
String name=person.optString("name");
// construct the object and add it to the arraylist
Person p=new Person();
p.picture=picture;
p.id=id;
p.name=name;
arrPersons.add(p);
}
//sort Arraylist
Collections.sort(arrPersons, new PersonSortByName());
Gson gson = new Gson();
//gson.toJson(arrPersons);
String jsonString = gson.toJson(arrPersons);
sortedjsonArray = new JSONArray(jsonString);
} catch (JSONException e) {
e.printStackTrace();
}
return sortedjsonArray;
}
public class PersonSortByName implements Comparator<Person>{
public int compare(Person o1, Person o2) {
return o1.name.compareTo(o2.name);
}
}
public class Person{
public String picture;
public String id;
public String name;
}
List<Person> arrPersons = new ArrayList<Person>();
// populate your list
Gson gson = new Gson();
JsonElement element = gson.toJsonTree(arrPersons, new TypeToken<List<Person>>() {}.getType());
if (! element.isJsonArray()) {
// fail appropriately
throw new SomeException();
}
JsonArray jsonArray = element.getAsJsonArray();