2016-12-15 90 views
0

我有一个从URL加载JSON Java函数,然后返回它作为一个JSONObject的Java:包含JSON对象数组

我使用的功能是: json = new JSONObject(jsonString);org.json.JSONObject

的问题是包含在对象中的任何数组只是以字符串的形式返回,而不是以数组的形式返回。

我们也不知道被包含的JSON的格式,所以我们不能专门调用对象的属性来解析。它只需要能够处理任何可能存在的数组。

我该如何解决这个问题?

+3

你有一些代码示例吗?输入输出? – cralfaro

+1

你应该看看使用谷歌的Gson库来反序列化JSON文件。 –

回答

0

您可以使用Gson来解析json字符串。它干净和容易。

对于使用Gson,您需要先创建一个类来描述这样的单个响应对象。现在,你已经有包含对象的数组JSON字符串

public class ResponseObject { 
    public String id; 
    public String name; 
} 

,如下解析JSON字符串。

Gson gson = new Gson(); 
ResponseObject[] objectArray = gson.fromJson(jsonString, ResponseObject[].class); 

简单!

+0

与Jan Kaufmann的回答相同,问题在于它意味着Java必须知道JSON的格式,但事实并非如此。 Java将JSONObject返回给Velocity模板,因此Java需要能够在不知道格式的情况下处理对象中的数组。 – marcusds

0

如果你还是想的JSONObject,您检索数组实际上是这样的..

JSONObject jsonObject = new JSONObject(jsonString); 
JSONArray hobbies = jsonObject.getJSONArray("hobbies"); 

这样

hobbies.getString(0) 
hobbies.getString(1) 
etc.. 

JSONArray本身具有获得()getDouble(),getInt()等。

+0

问题在于它意味着Java必须知道JSON的格式,但事实并非如此。 Java将JSONObject返回给Velocity模板,因此Java需要能够在不知道格式的情况下处理对象中的数组。 – marcusds

+0

这不应该是你自己的责任吗?但你并没有问及迭代格式,也没有提供json的结构。它就像*做它/我为我工作*一样,以检查该条目是否在数组中讨论了多次,像这样[one](http://stackoverflow.com/questions/9988287/test -if-IT-是-的JSONObject或 - jSONArray),其中 –

相关问题