如何使用Json解析?

问题描述:

以下是我的JSON文件: -如何使用Json解析?

"Restaurants":{ 

    "8":{ 
     "Res_name":"Purple Cafe and Wine Bar", 
     "foodtype":"American, Wine", 
     "city":"Seattle", 
     "state":"WA", 
     "latitude":"0", 
     "longitude":"0" 
    }, 
    "9":{ 
     "Res_name":"Quinn's", 
     "foodtype":"American, Pubs", 
     "city":"Seattle", 
     "state":"WA", 
     "latitude":"0", 
     "longitude":"0" 
    }, 
    "19":{ 
     "Res_name":"Dahlia Lounge", 
     "foodtype":"American", 
     "city":"Seattle", 
     "state":"WA", 
     "latitude":"0", 
     "longitude":"0" 
    }, 
}, 

我使用下面的代码为JSON解析: -

try { 
    JSONObject jsonObj = new JSONObject(res); 
    JSONObject mRestaurant = jsonObj.getJSONObject("Restaurants"); 
    String mResult = jsonObj.getString("Result"); 
    System.out.println("mRestaurant is:- " + mRestaurant); 
} catch (JSONException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

的mRestaurant值低于: -

{"487":{"state":"WA","Res_name":"SAM Taste","longitude":"0","latitude":"0","foodtype":"American","city":"Seattle"},"332":{"state":"WA","Res_name":"Luna Park Cafe","longitude":"0","latitude":"0","foodtype":"American","city":"Seattle"},"35":{"state":"WA","Res_name":"Restaurant Zoe","longitude":"0","latitude":"0","foodtype":"American, Bar","city":"Seattle"}," 

但什么是获得Res_Name的下一步,食物类型从上面的反应。

任何帮助,将不胜感激。

下面的代码是json解析的下一步。

public void getdata() { 
    String res = mWebRequest.performGet(Constants.url+ "restaurants.php? action=searchRestaurant&lat=0&lon=0&foodtype="+ mEdttxtSearch.getText().toString() + "&state="+ mEdttxtSearch.getText().toString() + "&city="+                    mEdttxtSearch.getText().toString()+ "&devType=Android"); 
    System.out.println("res is:- " + res); 
    if (res != null) { 
     try { 
      JSONObject jsonObj = new JSONObject(res); 
      JSONObject mRestaurants = jsonObj.getJSONObject("Restaurants"); 
      String mResult = jsonObj.getString("Result"); 
      if (jsonObj.has("Restaurants")) { 
       Iterator<Object> keys = mRestaurants.keys(); 
       while (keys.hasNext()) { 
        String key = (String) keys.next(); 
        JSONObject obj = new JSONObject(); 
        obj = mRestaurants.getJSONObject(key); 
        mRes_Name.add(obj.getString("Res_name")); 
        mLatitude.add(obj.getString("latitude")); 
        mLongitude.add(obj.getString("longitude")); 
        mState.add(obj.getString("state")); 
        mCity.add(obj.getString("city")); 
        mFood_Type.add(obj.getString("foodtype")); 
       } 
      } 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 

使用get()方法:

String mRestaurant = jsonObj.get("487").get("Res_name"); 
+1

这里487是不固定的。 – 2012-01-13 12:15:05

+1

这是一个例子;想办法。对不起,你忽略了告诉你需要喂什么大小的勺子。 – duffymo 2012-01-13 12:45:27

+0

你好Duffymo上面的代码给我错误。 – 2012-01-13 12:51:57

使用GSON的一样,因为它支持直接转换从JSON到Java和Java到JSON,请访问以下链接:

Converting JSON to Java