0

.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();
                }
4

1 に答える 1

0

gson lib http://code.google.com/p/google-gson/を使用することをお勧めします。

JavaでJSON Webサービスを解析するための推奨コードはありますか?

json データを知らなければ、具体的なアドバイスをすることは困難です。とにかく、Android 開発者の間で非常に人気のある gson lib を使用することをお勧めします。

于 2012-06-09T16:09:03.270 に答える