[英]How to parse JSON Array (Not Json Object) in Android
我很難找到解析 JSONArray 的方法。 它看起來像這樣:
[{"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");
}
我只舉一個傑克遜的小例子:
首先創建一個數據持有者,其中包含來自 JSON 字符串的字段
// imports
// ...
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyDataHolder {
@JsonProperty("name")
public String mName;
@JsonProperty("url")
public String mUrl;
}
並解析 MyDataHolders 列表
String jsonString = // your json
ObjectMapper mapper = new ObjectMapper();
List<MyDataHolder> list = mapper.readValue(jsonString,
new TypeReference<ArrayList<MyDataHolder>>() {});
使用列表項
String firstName = list.get(0).mName;
String secondName = list.get(1).mName;
public static void main(String[] args) throws JSONException {
String str = "[{\"name\":\"name1\",\"url\":\"url1\"},{\"name\":\"name2\",\"url\":\"url2\"}]";
JSONArray jsonarray = new JSONArray(str);
for(int i=0; i<jsonarray.length(); i++){
JSONObject obj = jsonarray.getJSONObject(i);
String name = obj.getString("name");
String url = obj.getString("url");
System.out.println(name);
System.out.println(url);
}
}
輸出:
name1
url1
name2
url2
創建一個類來保存對象。
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
參考文章: http : //blog.patrickbaumann.com/2011/11/gson-array-deserialization/
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());
在此示例中,一個 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");
}
已經提到了一些很好的建議。 使用 GSON 確實非常方便,為了讓生活更輕松,你可以試試這個網站,它叫做 jsonschema2pojo,它就是這樣做的:
你給它你的 json,它會生成一個可以粘貼到你的項目中的 java 對象。 您可以選擇 GSON 來注釋您的變量,因此從您的 json 中提取對象變得更加容易!
我的案例從服務器示例加載..
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"));
}
為列表中的對象創建一個 POJO Java 類,如下所示:
class NameUrlClass{
private String name;
private String url;
//Constructor
public NameUrlClass(String name,String url){
this.name = name;
this.url = url;
}
}
現在只需創建一個 NameUrlClass 列表並將其初始化為一個 ArrayList ,如下所示:
List<NameUrlClass> obj = new ArrayList<NameUrlClass>;
您可以使用將 JSON 數組存儲在此對象中
obj = JSONArray;//[{"name":"name1","url":"url1"}{"name":"name2","url":"url2"},...]
我知道舊帖子,但除非我誤解了這個問題,否則這應該可以解決問題:
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]);
}
}
URL url = new URL("your URL");
connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream stream = connection.getInputStream();
BufferedReader reader;
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String line = "";
while ((line = reader.readLine()) != null) {
buffer.append(line);
}
//setting the json string
String finalJson = buffer.toString();
//this is your string get the pattern from buffer.
JSONArray jsonarray = new JSONArray(finalJson);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.