0

以下のような JSON ペイロードを返すhttp://susana.iovanalex.ro/esculap/ws2.php?key=abc&action=getpatientlistにREST Web サービスがあります。

[{"id":"15","nume":"Suciu","prenume":"Monica","location":"Cardiologie, Salon 4, Pat 
   2","alarm_pulse_min":"60","alarm_pulse_max":"90","alarm_oxy_min":"90"},
 {"id":"101","nume":"Test Node","prenume":"Arduino","location":"UPT Electro, 
   B019","alarm_pulse_min":"50","alarm_pulse_max":"160","alarm_oxy_min":"93"},
 {"id":"160","nume":"Vasilescu","prenume":"Ion","location":"Cardiologie, Salon 4, Pat 
   2","alarm_pulse_min":"60","alarm_pulse_max":"120","alarm_oxy_min":"80"},
  {"id":"161","nume":"Lungescu","prenume":"Simion","location":"Pneumologie, Salon 5, Pat 
   5","alarm_pulse_min":"70","alarm_pulse_max":"110","alarm_oxy_min":"95"},
 {"id":"162","nume":"Paunescu","prenume":"Ramona","location":"Cardiologie, Salon 4, Pat 
   2","alarm_pulse_min":"0","alarm_pulse_max":"0","alarm_oxy_min":"0"}]

http://www.androidcompetencycenter.com/2009/10/json-parsing-in-android/のチュートリアルに従って Android のパーサーを使用する場合、処理されたデータを ArrayList で返したいと思います。

次のエラーが常に発生します。

 org.json.JSONException: Value [{"prenume":"Monica", ... "nume":"Paunescu"}] of type         
 org.json.JSONArray cannot be converted to JSONObject.

コード スニペットまたは詳しい情報がどこにあるかを教えてください。

4

5 に答える 5

3

Json 全体が JSONObjects の JSONArray です。

JSONObject を取得しようとしている場合:

 JSONObject jObject = new JSONObject("[{"prenume":"Monica", ... "nume":"Paunescu"}]");

しかし、それは配列です!

試す:

 JSONArray jArray = new JSONArray("[{"prenume":"Monica", ... "nume":"Paunescu"}]");

 for(int i=0; i < jArray.length(); i++){
      JSONObject jObject = jArray.getJSONObject(i);
      String prenume = jObject.getString("prenume");
      Log.i("TAG", "Prenume is: "+ prenume);
 }

ここですべて説明されています: http://www.json.org/とここhttp://www.json.org/java/

于 2012-07-17T10:43:14.163 に答える
1

ここhttp://www.json.org/を参照してください。Webサービスにはjsonオブジェクトではなくjson配列が含まれているため、次のように解析します。

JSONArray JSONArrays = new JSONArray(jString); 

for(int n = 0; n < JSONArrays.length(); n++)
{
    JSONObject object = JSONArrays.getJSONObject(n);
    // do some stuff....
}
于 2012-07-17T10:43:41.817 に答える
1

最良の方法は、出力として受け取った JSONAray 文字列の解析に GSON を使用することです。これにより、文字列ではなく実際のオブジェクトとしてデータを管理できます。

JSON配列を解析するには、次の投稿をご覧ください

Android で Gson を使用して JSON 配列を解析する方法

あなたがする必要があるのは、JSON出力からのパラメータ名でクラスを作成することだけです

于 2012-07-17T10:59:34.330 に答える
0

このリンクを参照できます

https://stackoverflow.com/a/11446076/1441666

{
"result": "success",
"countryCodeList":
[
  {"countryCode":"00","countryName":"World Wide"},
  {"countryCode":"kr","countryName":"Korea"}
] 
}

ここでは、国の詳細を取得しています

JSONObject json = new JSONObject(jsonstring);
JSONArray nameArray = json.names();
JSONArray valArray = json.toJSONArray(nameArray);

JSONArray valArray1 = valArray.getJSONArray(1);

valArray1.toString().replace("[", "");
valArray1.toString().replace("]", "");

int len = valArray1.length();

for (int i = 0; i < valArray1.length(); i++) {

 Country country = new Country();
 JSONObject arr = valArray1.getJSONObject(i);
 country.setCountryCode(arr.getString("countryCode"));                        
 country.setCountryName(arr.getString("countryName"));
 arrCountries.add(country);
}
于 2012-07-17T11:00:11.777 に答える