2014-02-08 26 views
1

我有这下面的JSON字符串,我想提取JSON数组到单独的字符串使用android,但我面临着JSON异常。Android中的JSONException,如何解决?

 try 
     { 


     String str="[{'Festivals':{'Fesa1':'english is good ','Fesb1':'my english is not so accurate','Fesa2':'oriya is very nice language','Fesb2':'my oriya is absolutely good','Fesa3':'cricket is a very popular game ','Fesb3':'cricket is life for indian','Fesa4':'hockey is the original game for india','Fesb4':'hockey needs to improve ','Fesa5':'computer is a very functional device','Fesb5':'computer is very helpful to mankind'}}] "; 

     JSONArray jsonArray = new JSONArray(str); 

     String abc1=null; 

     String abc2=null; 

     String abc3=null; 

     int i2=0; 

     for(int i=0;i<jsonArray.length();i++) 
     { 

      JSONObject e = jsonArray.getJSONObject(i); 

      JSONObject jsonObject = e.getJSONObject("Festivals"); 

      tt.setText(tt.getText().toString()+String.valueOf("Total Array Length: "+jsonArray.length()+"\n"));   

      for(int i1=0;i1<jsonObject.length();i1++) 
      { 

       i2=i1+1; 

       abc1=jsonObject.getString("Fesa"+i2); 

       abc2=jsonObject.getString("Fesb"+i2); 


       tt.setText(tt.getText().toString()+String.valueOf(abc1+" - "+abc2+" - "+" \n"));   

      } 





     }  



    } 
    catch (JSONException e) 
    { 

     tt.setText("JSON Exception"); 


    } 

所以,我越来越JSONExcepiton错误。请帮助我。请建议我一些解决方案

先谢谢了!

+1

确保json有效。检查它@ http://jsonlint.com/ – Raghunandan

回答

1

您的JSON是无效的。检查它@http://jsonlint.com/

应该

[ // json array node 
    { // json object node 
     "abc": { // json object abc 
      "name": "andy", 
      "blood": "o+", 
      "ge": 45 
     } 
    } 
] 

解析

JSONArray jarray = new JSONArray("your jsonstring"); 
for(int i=0;i<jarray.length();i++) 
{ 
JSONObject jb = (JSONObject)jarray.get(i); 
JSONObject jb1 = jb.getJSONObject("abc"); 
String name = jb1.getString("name"); 
// similarly blood and use getInt for ge 
} 

编辑:

更改您的JSON下面,使用下面你将得到所有值

String jsonstring ="{" 
     +"abc"+": [" 
      +"{" 
       + "Fesa"+":"+ "englishisgood" 
      +"}," 
      +"{" 
       +"Fesa"+":"+ "myenglishisnotsoaccurate" 
      +"}," 
      +"{" 
       + "Fesa"+":"+ "germanisverynicelanguage" 
      +"}"+"," 
      +"{" 
       +"Fesa"+":"+ "mygermanisabsolutelygood" 
      +"}," 
      +"{" 
       +"Fesa"+":"+ "cricketisaverypopulargame" 
      +"}," 
      +"{" 
       +"Fesa"+":"+ "cricketislifeforindian" 
      +"}," 
      +"{" 
       +"Fesa"+":"+ "hockeyistheoriginalgameforindia" 
      +"}," 
      +"{" 
       +"Fesa"+":"+ "hockeyneedstoimprove" 
      +"}," 
      +"{" 
       +"Fesa"+":"+ "computerisaveryfunctionaldevice" 
      +"}," 
      +"{" 
       +"Fesa"+":"+ "computerisveryhelpfultomankind" 
      +"}," 
     +"]"+ 
    "}"; 

解析

try 
    { 
    JSONObject jsb = new JSONObject(jsonstring); 
    JSONArray jarray =jsb.getJSONArray("abc"); 
    for(int i=0;i<jarray.length();i++) 
    { 
    JSONObject jb = (JSONObject)jarray.get(i); 
    String name = jb.getString("Fesa"); 
    Log.i("..........",name); 
    Toast.makeText(getApplicationContext(), name, 1000).show(); 
    } 
    }catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
+0

是的,但在ANDROID字符串字符不允许双引号字符串值,所以,如何给有效的JSON字符串。 – animation123

+0

@ user2551103为什么不能?你做错了 – Raghunandan

+0

没有人给它错误。我们不能在Android中给出一个字符串变量的单引号。 String str ='';错误会无效字符常量.... – animation123

0

确保JSON如上答案无效。如果有任何特殊字符需要转义,例如

\" instead of " 
相关问题