2015-07-03 95 views
-3

我的字符串包含JSON如何从android中的json字符串创建JSONObject和JSON ARRAy?

result=[{"USER_ID":83,"PROJECT_BY_DETAILS":"An adaptation of a nursery rhyme into a dramatic film"},{"USER_ID":88,"PROJECT_BY_DETAILS":"Test - over ye mountain blue "}] 

如何从这个字符串创建的JSONObject和JSONarray

我用这个代码

JSONObject json =new JSONObject(result); 
      //Get the element that holds the earthquakes (JSONArray) 
      JSONArray earthquakes = json.getJSONArray(""); 

我得到错误

Error parsing data org.json.JSONException: Value [{"USER_ID":83,"PRO 

回答

0

使用Gson为你做到这一点。

Json响应是一个数组,你知道它是因为方括号[]。

  1. 创建一个包含字段USER_ID和PROJECT_BY_DETAILS的映射对象(java类)。

    public class yourClass(){ public String USER_ID; public String PROJECT_BY_DETAILS; }

  2. 像这样创建一个类型数组。

    final类型typeYourObject = new TypeToken>(){}。getType();

  3. 定义名单私人

    名单yourList;

  4. 使用GSON你将数组转换到一个列表,像这样

    yourList = gson.fromJson(yourJson,typeYourObject);

  5. 随着列表后面你可以做任何你想做的事情。与Gson一起将其转换回JsonArray或创建一个习惯JsonObject。

+0

CAn你举个例子。 – sandeep

+0

这就是你所需要的。我解释一下。我唯一想念的是Gson的实例化。像Gson gson = new Gson(); –

+0

我编辑了答案,检查出来。 –

0

使用此代码为您JsonArray:

try { 
         JSONArray json = new JSONArray(YOUR_JSON_STRING); 
         for (int i = 0; i < json.length(); i++) { 

          JSONObject jsonDATA = json.getJSONObject(i); 

          String jsonid = jsonDATA.getInt("USER_ID"); 
          String jsondetails = jsonDATA.getString("PROJECT_BY_DETAILS"); 
          } 
          } catch (JSONException e) { 
         return null; 
        } 
0

根据我的理解JSON对象看起来像这样,

{ "RESULT":[ { "USER_ID":83, "PROJECT_BY_DETAILS":"An adaptation of a nursery rhyme into a dramatic film" }, { "USER_ID":88, "PROJECT_BY_DETAILS":"Test - over ye mountain blue " } ] }

要转换此为String和你希望重新构造JSON对象。在Android端解码功能将是这样的,

void jsonDecode(String jsonResponse) { try { JSONObject jsonRootObject = new JSONObject(jsonResponse); JSONArray jData = jsonRootObject.getJSONArray("RESULT"); for(int i = 0; i < jData.length(); ++i) { JSONObject jObj = jData.getJSONObject(i); String userID = jObj.optString("USER_ID"); String projectDetails = jObj.optString("PROJECT_BY_DETAILS"); Toast.makeText(context, userID + " -- " + projectDetails,0).show(); } } catch(JSONException e) { e.printStackTrace(); } }