Android:类型为org.json.jsonobject $ 1的值为null,无法转换为jsonobject

时间:2014-11-10 16:10:26

标签: android json android-json

我从服务器获取数据并存储在我的Android应用程序中。我将JSONArray名称改为“project_data”,并且在数组中有JSONObjects列表。我根据JSONArray的长度迭代JSONObject列表。

这是从服务器获取的JSON数据

"project_data": [
    null,
    null,
    {
        "id": "14",
        "name": "JOHN",
        "short_name": "JH",          
    }
]

这是面临的错误

value null at 0 of type org.json.jsonobject$1 cannot be converted to jsonobject

这是我的代码

JSONArray projectData=job.getJSONArray("project_data");
for(int i=0;i<projectData.length();i++)
        {               
          JSONObject proj=projectData.getJSONObject(i);
          Log.i("projectdetails",proj.toString());
          pro = Project.getProject(getValue(proj,"id"));
          if(pro==null)
              pro=new Project();
          pro.p_id = getValue(proj,"id");
          pro.name = getValue(proj,"name");
          pro.short_name = getValue(proj,"short_name");
          pro.save();
        }

我正面临这一行的错误。 JSONObject proj = projectData.getJSONObject(i);

请帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

这对我有用。

 Object obj = jArray.get(i);
 if (obj != null && !obj.toString().equals("null")) {
    JSONObject jObj = jArray.getJSONObject(i);
    //Make parse here
 }

答案 1 :(得分:0)

您可以从服务器更改数据吗?你必须从像这样的PHP服务器数据

{"project_data": [{"id": "14","name": "JOHN","short_name": "JH" }]}

然后解码JSON对象如下。

public class MainActivity extends Activity {

TextView txtView;
TextView txtView1;
int i=0;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    txtView = (TextView) findViewById(R.id.txtView);
    txtView1 = (TextView) findViewById(R.id.txtView1);

    //String job = "'project_data': [null,null,{'id': '14','name': 'JOHN','short_name': 'JH', }]"; //bad data
    String job = "{'project_data': [{'id': '14','name': 'JOHN','short_name': 'JH' }]}"; 




    txtView.setText(job);

    try{


        String s =" " ;
        JSONObject jsnobject = new JSONObject(job);

        JSONArray jsonArray = jsnobject.getJSONArray("project_data");
        for (int i = 0; i < jsonArray.length(); i++) {
            JSONObject explrObject = jsonArray.getJSONObject(i);

            s= s+   "name: " + explrObject.getString("name")+"\n" +
              "short_name: "+ explrObject.getString("short_name") +"\n";


        }


        txtView1.setText(s);
    }catch(Exception e){

        txtView.setText( "error 3 "+i+" "+ e.toString());
    }



}


}

答案 2 :(得分:0)

服务器不应该给你空数据,但特别是如果你真的想得到结果你可以尝试删除for循环然后

JSONObject proj=projectData.getJSONObject(2);//index of your json object in projectData array, 0,1 are null so you are getting that error