.net Web サービスから JSON データを解析する多くのバージョンを試しましたが、現在のバージョンでは JSON データの前に {"d": ..... が追加されていますが、その理由がわかりません。
Web サービスを手動で呼び出すと、データは正しい形式になります。ただし、このパーサーを使用すると、 usin .names() をチェックして JSONObjects の名前を一覧表示しましたが、 ["d"] のみが表示されます
JavaでJSON Webサービスを解析するための推奨コードはありますか?
データを解析するコードは次のとおりです
//initialize
InputStream is = null;
String result = "";
JSONObject jArray = null;
String url = "http://10.0.2.2:1672/Eventurous/WsEventurousMobile.asmx/getEventsList";
//http post
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(url);
JSONObject obj = new JSONObject();
obj.put("category",category);
httppost.setEntity(new StringEntity(obj.toString(),"UTF-8"));
httppost.setHeader("Accept","application/json");
httppost.setHeader("Content-type","application/json");
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
//try parse the string to a JSON object
try{
jArray = new JSONObject(result);
}catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
try{
JSONArray catalogObj = jArray.getJSONArray("Table");
//Im using the newtonsoft json dataset converter and so the name of the JSONArray
//is by default Table and i have no idea how to change it either
JSONObject event = catalogObj.getJSONObject(0);
return event.getString("EventName");
}
catch(Exception e)
{
return e.toString();
}