如何从jsonobject到java获取值“10th”?

时间:2012-01-23 14:03:18

标签: java php android json

我的PHP代码是:

$query=mysql_query("select adm_num,firstname,dob,adm_date,address1,mothername,medium,fathername from students where adm_num ='".$_REQUEST["adm_num"]."'");
$get_classid = mysql_fetch_assoc(mysql_query("select class_id from students where adm_num = '".$_REQUEST["adm_num"]."'"));
$sql = mysql_query("select class as classname from school_classes where class_id=".$get_classid["class_id"]." and admin_id=1");
while($row = mysql_fetch_assoc($query))
{
$output[]=$row;

}
 while($row2 = mysql_fetch_assoc($sql))
{
$output[]=$row2;
}
$sql1 = mysql_query("select * from school_exams where admin_id=1");
while($row1 = mysql_fetch_assoc($sql1))
{
$output[]=$row1;

}
print(json_encode($output));
mysql_close();

我的代码是:

     String getclass;
     JSONArray jArray = new JSONArray(result);
    JSONObject json_data=null;

    for(int i=0;i<jArray.length();i++){
        json_data = jArray.getJSONObject(i);
        getadmnno=json_data.getString("adm_num");
        getstudname=json_data.getString("firstname");
        getdob=json_data.getString("dob");
        getadmndate=json_data.getString("adm_date");
        getaddress=json_data.getString("address1");
        getfathername=json_data.getString("mothername");
        getmedium=json_data.getString("medium");
        getmothername=json_data.getString("fathername");
        getclassname=json_data.getString("class_id");
        admNo.setText(getadmnno);
        name.setText(getstudname); 
        dob.setText(getdob);
        admnDate.setText(getadmndate);
        address.setText(getaddress); 
        fatherName.setText(getfathername);
        medium.setText(getmedium);
        motherName.setText(getmothername);
        className.setText(getclassname);

    }

//我在class_name中得到的值是“10th”,因此问题。

json输出是这样的:

[{"adm_num":"1","firstname":"RAJESH","dob":"2011-12-19","adm_date":"0000-00-00","address1":"hyd","mothername":"shahid","medium":"English","fathername":"Mohanamma"},{"classname":"10th"},{"exam_id":"1","admin_id":"1","types":"Unit Test-1"},{"exam_id":"2","admin_id":"1","types":"Unit Test-2"}]

那么有人可以帮助我如何将这个(“第10个”)数据传递给getclass吗?

我知道我得到的数据是一个字符。但我没有从json对象中获取此选项的选项。我得到的错误是:

dataorg.json.jsonexception No value for class_name

但我的json输出是:[{"classname":"10th"}]

那么请帮助我如何将数据传递给它?请具体,请写一些代码。这是更好,更容易理解的方式。如果有人想看到整个代码请问我,我肯定会更新我的问题。

提前致谢

1 个答案:

答案 0 :(得分:1)

输入JSON实际上由三个不同种类的4个对象组成。包含“classname”字段的对象是第二个对象。

但是,您的代码假设数组中的所有对象都具有相同的类型,并且它们都具有“classname”字段。这就是造成你的例外的原因。

仔细查看JSON对象的结构,并确保Java代码与该结构匹配。