我从服务器获取数据并存储在我的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);
请帮我解决这个问题。
答案 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