解析JSON不显示超出范围

时间:2013-12-08 10:00:01

标签: java android json

我正在解析我的java中的JSON文件,而JSON文件就像这样

{"System":[{"System1":{"DisplayName":"fabcd","InternalName":"AD","SystemCode":"0001","SystemName":"vnid"},"System2":{"DisplayName":"akdfkajfl","InternalName":"AD","SystemCode":"0001","SystemName":"kjdfkafdk"}}]}

我无法访问“System”数组中的所有对象。请帮帮我。我的代码就是这个

Systems = jObj.getJSONArray("System");
                Log.d("Array", Systems.toString());
                JSONObject first = Systems.getJSONObject(0);
                Log.d("CSystems",first.toString());

                // looping through All Contacts
                for(int i = 0; i <=Systems.length(); i++){
                    JSONObject c = Systems.getJSONObject(i);
                    Log.d("SubSystems", Systems.getString(0));

                }

感谢。

2 个答案:

答案 0 :(得分:0)

for循环不应该循环first而不是Systems? (通过更改来说明它是一个对象,而不是一个数组。)

答案 1 :(得分:0)

解析

      try
      {
          JSONObject jObj = new JSONObject("My Json string");
          JSONArray jr = jObj.getJSONArray("System");
          JSONObject jb= jr.getJSONObject(0);
          JSONObject system1 = jb.getJSONObject("System1");
          String name =  system1.getString("DisplayName");
          String internalname = system1.getString("InternalName");
          String SystemCode = system1.getString("SystemCode");
          String SystemName = system1.getString("SystemName");
          JSONObject system2 = jb.getJSONObject("System2");
          String name1= system2.getString("DisplayName");
          String internalname1 = system2.getString("InternalName");
          String SystemCode1 = system2.getString("SystemCode");
          String SystemName1 = system2.getString("SystemName");
          Log.i("..........",name+"..."+internalname+"..."+SystemCode+"..."+SystemName);
          Log.i("..........",name1+"..."+internalname1+"..."+SystemCode1+"..."+SystemName1);

      }catch(Exception e)
      {
          e.printStackTrace();
      }

与上述相同。

      try
      {
          JSONObject jObj = new JSONObject("My json string");
          JSONArray jr = jObj.getJSONArray("System");
          for(int i = 0; i<jr.length(); i++){
              JSONObject c = jr.getJSONObject(i);
              for(int j = 1;j<3; j++){
              JSONObject jb = c.getJSONObject("System"+(j));
              Log.i("SubSystems", jb.getString("DisplayName"));
              Log.i("SubSystems", jb.getString("InternalName"));
              Log.i("SubSystems", jb.getString("SystemCode"));
              Log.i("SubSystems", jb.getString("SystemName"));
              }
          }

      }catch(Exception e)
      {
          e.printStackTrace();
      }

或将你的json改为

{
    "System": [
        {
            "DisplayName": "fabcd",
            "InternalName": "AD",
            "SystemCode": "0001",
            "SystemName": "vnid"
        },
        {
            "DisplayName": "akdfkajfl",
            "InternalName": "AD",
            "SystemCode": "0001",
            "SystemName": "kjdfkafdk"
        }
    ]
}

解析。将json更改为上面的解析要容易得多。

 try
          {
              JSONObject jObj = new JSONObject("My json string);
              JSONArray jr = jObj.getJSONArray("System");
              for(int i = 0; i<jr.length(); i++){
                  JSONObject c = jr.getJSONObject(i);
                  Log.i("SubSystems", c.getString("DisplayName"));
                  Log.i("SubSystems", c.getString("InternalName"));
                  Log.i("SubSystems", c.getString("SystemCode"));
                  Log.i("SubSystems", c.getString("SystemName"));

              }

          }catch(Exception e)
          {
              e.printStackTrace();
          }

您还可以查看https://code.google.com/p/google-gson/