Java 如何在Android中解析JSON数组(不是JSON对象)
我很难找到解析JSONArray的方法。 看起来是这样的:Java 如何在Android中解析JSON数组(不是JSON对象),java,android,json,gson,arrays,Java,Android,Json,Gson,Arrays,我很难找到解析JSONArray的方法。 看起来是这样的: [{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...] 如果JSON的编写方式不同(换句话说,如果返回的是JSON对象而不是对象数组),我知道如何解析它。 但这是我所拥有的一切,我必须去做 *编辑:它是一个有效的json。我用这个json制作了一个iPhone应用程序,现在我需要为Android做这个程序,但我想不出来。 有很多例子,但它们都与JSONObje
[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"},...]
如果JSON的编写方式不同(换句话说,如果返回的是JSON对象而不是对象数组),我知道如何解析它。
但这是我所拥有的一切,我必须去做
*编辑:它是一个有效的json。我用这个json制作了一个iPhone应用程序,现在我需要为Android做这个程序,但我想不出来。
有很多例子,但它们都与JSONObject相关。我需要些东西给JSONArray
有人能给我一些提示,或者一个教程或者一个例子吗
非常感谢 使用以下代码段来解析JsonArray
JSONArray jsonarray = new JSONArray(jsonStr);
for (int i = 0; i < jsonarray.length(); i++) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
String name = jsonobject.getString("name");
String url = jsonobject.getString("url");
}
JSONArray-JSONArray=新的JSONArray(jsonStr);
for(int i=0;i
希望有帮助。创建一个类来保存对象
public class Person{
private String name;
private String url;
//Get & Set methods for each field
}
然后按如下方式反序列化:
Gson gson = new Gson();
Person[] person = gson.fromJson(input, Person[].class); //input is your String
参考文章:@Stebra请参见此示例。这可能对你有帮助
public class CustomerInfo
{
@SerializedName("customerid")
public String customerid;
@SerializedName("picture")
public String picture;
@SerializedName("location")
public String location;
public CustomerInfo()
{}
}
当你得到结果时;像这样解析
List<CustomerInfo> customers = null;
customers = (List<CustomerInfo>)gson.fromJson(result, new TypeToken<List<CustomerInfo>>() {}.getType());
列出客户=null;
customers=(List)gson.fromJson(结果,newTypeToken(){}.getType());
在本例中,一个json数组中有多个对象。就是
这是json数组:[{“name”:“name1”,“url”:“url1”},{“name”:“name2”,“url”:“url2”},…]
这是一个对象:{“name”:“name1”,“url”:“url1”}
假设您已获得名为jSonResultString的字符串变量的结果:
JSONArray arr = new JSONArray(jSonResultString);
//loop through each object
for (int i=0; i<arr.length(); i++){
JSONObject jsonProductObject = arr.getJSONObject(i);
String name = jsonProductObject.getString("name");
String url = jsonProductObject.getString("url");
}
JSONArray arr=新的JSONArray(jSonResultString);
//循环遍历每个对象
对于(int i=0;i我只举一个小例子:
首先创建一个数据持有者,其中包含来自JSON字符串的字段
// imports
// ...
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyDataHolder {
@JsonProperty("name")
public String mName;
@JsonProperty("url")
public String mUrl;
}
并解析MyDataholder的列表
String jsonString = // your json
ObjectMapper mapper = new ObjectMapper();
List<MyDataHolder> list = mapper.readValue(jsonString,
new TypeReference<ArrayList<MyDataHolder>>() {});
已经提到了一些很好的建议。
使用GSON确实很方便,为了让生活更轻松,你可以试试这个
它被称为jsonschema2pojo,其功能正是:
您将json提供给它,它将生成一个可以粘贴到项目中的java对象。
您可以选择GSON来注释变量,这样从json中提取对象就更容易了!MyCase
从服务器加载示例
int jsonLength = Integer.parseInt(jsonObject.getString("number_of_messages"));
if (jsonLength != 1) {
for (int i = 0; i < jsonLength; i++) {
JSONArray jsonArray = new JSONArray(jsonObject.getString("messages"));
JSONObject resJson = (JSONObject) jsonArray.get(i);
//addItem(resJson.getString("message"), resJson.getString("name"), resJson.getString("created_at"));
}
int-jsonLength=Integer.parseInt(jsonObject.getString(“消息的数量”);
如果(jsonLength!=1){
for(int i=0;i
希望它能对我所知道的老帖子有所帮助,但除非我误解了这个问题,否则这应该会起到作用:
s = '[{"name":"name1","url":"url1"},{"name":"name2","url":"url2"}]';
eval("array=" + s);
for (var i = 0; i < array.length; i++) {
for (var index in array[i]) {
alert(array[i][index]);
}
s='[{“name”:“name1”,“url”:“url1”},{“name”:“name2”,“url”:“url2”}];
eval(“数组=”+s);
对于(var i=0;i
}为列表中的对象创建一个POJO Java类,如下所示:
class NameUrlClass{
private String name;
private String url;
//Constructor
public NameUrlClass(String name,String url){
this.name = name;
this.url = url;
}
}
List<NameUrlClass> obj = new ArrayList<NameUrlClass>;
现在只需创建NameUrlClass的列表并将其初始化为ArrayList,如下所示:
class NameUrlClass{
private String name;
private String url;
//Constructor
public NameUrlClass(String name,String url){
this.name = name;
this.url = url;
}
}
List<NameUrlClass> obj = new ArrayList<NameUrlClass>;
试试看你的json是否有效。你是否使用任何库来解析json?使用gson库进行json解析。非常有用。它是有效的。我在为iPhone开发的一个应用程序中解析了它,它正在工作。我只是不知道如何在Android@nikash是的,我注意到我可以使用gson。唯一的问题是,我找到的所有示例都是用于解析JSONObje的ct而不是JSONArrayPost您到目前为止尝试过的代码。相应地给出一个精确的答案会很有帮助。我评估了这个“输入”这是一个非常简单的解决方案。它应该是我的viewResult变量中被接受的一个。你的JSONArray StringResult变量是我需要从中获取json的URL还是已经获取json的URL?到目前为止,这是最简单的解决方案。你能给我一个例子,我如何从URL获取json作为字符串吗ve,拜托?DefaultHttpClient
s execute方法是一个阻塞调用,因此它必须在后台任务中完成,只是为了弄清楚它为什么在单独的类中。我收到了一个关于HttpGetTask构造函数的错误。“构造函数HttpGetTask(OnHttpGetCompletedListener)引用了缺少的类型OnHttpGetCompletedListener”您导入了OnHttpGetCompletedListener吗?像这样在这里导入您的\u包\u名称\u.HttpGetTask.OnHttpGetCompletedListener;
是的,这就是问题所在…感谢您解决了我的问题:)我很难从URL获取我的JSONstring。也许你能帮我一下吗?谢谢你用例子把它分解,很好的澄清只有一个问题如果jsonarray包含像[2].[4]这样的数字,并且里面的数字又包含一个数组,那么如果我想从中检索,尤其是嵌套在数字[4]中的数组在java代码中,我必须编写int i=4???@BiggDawgg:很高兴它对您有所帮助。在单独的线程中用JSON数据发布您的问题,这样我就可以很容易地回答.p.s“jsonObject.getString(“messages”)”类型是jsonArray;第一个存在的答案是不能将字符串转换为jsonArray;我正在修复它。还不清楚obj=jsonArray;
应该做什么。在这个上下文中jsonArray
是什么?它来自哪里?直接替换它时,用new ArrayList
初始化obj
的目的是什么不管怎么说,你是在事后才这么做的?
class NameUrlClass{
private String name;
private String url;
//Constructor
public NameUrlClass(String name,String url){
this.name = name;
this.url = url;
}
}
List<NameUrlClass> obj = new ArrayList<NameUrlClass>;
obj = JSONArray;//[{"name":"name1","url":"url1"}{"name":"name2","url":"url2"},...]