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/
답변
@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());
답변
이 예에서는 하나의 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에서 객체를 추출하는 것이 훨씬 쉬워집니다!