Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
坚持用Java解析json数据_Java_Android_Json - Fatal编程技术网

坚持用Java解析json数据

坚持用Java解析json数据,java,android,json,Java,Android,Json,我希望有人能帮助我。我正在尝试解析以下json文件: { "seminar":[{ "categoryid": "1", "cpe": "13", "inventory": [ "Discussion", "Value x", "Value y" ], "teachers": [{ "titel": "Dipl.-Ing.", "company": "XY",

我希望有人能帮助我。我正在尝试解析以下json文件:

{
"seminar":[{
    "categoryid": "1",
    "cpe": "13",
    "inventory": [
        "Discussion",
        "Value x",
        "Value y"
    ],
    "teachers": [{
        "titel": "Dipl.-Ing.",
        "company": "XY",
        "name": "Test",
        "id": "3"
    }]
}]
}    
我对解析中的教师数据感到迷茫

private static final String TAG_TEACHERS = "teachers";
private static final String TAG_TITLE = "title";

for(int i = 0; i < seminar.length(); i++){
JSONObject c = seminar.getJSONObject(i);

teachers = c.getJSONArray(TAG_TEACHERS);
for(int z = 0; z < teachers.length(); z++){                 
JSONObject d = teachers.getJSONObject(z);
String title  = d.getString(TAG_TITLE);
Log.d("JSONParsingActivity", title);
private static final String TAG_TEACHERS=“TEACHERS”;
私有静态最终字符串标记_TITLE=“TITLE”;
for(int i=0;i
我得到的错误是System.err(1010):org.json.JSONException:org.json.JSONObject$1类型的教师处的值null无法转换为JSONArray


我做错了什么?正如我从JSON文档中了解到的,教师是一个JSON数组而不是一个对象。有人能帮我吗?

似乎你使用了错误的标记。 教师=c.getJSONArray(TAG_DOZENTEN)


是不是应该给老师贴标签而不是贴标签?

这可能不是你具体问题的答案,但无论如何。 你需要手动解析吗?为什么不使用映射器,比如Jackson


更加流畅!

您可以将给定的JSON字符串解析为:

JSONObject jObject  = new JSONObject("YOUR_JSON_STRING");

JSONArray jArrseminar = jObj.getJSONArray("seminar");
for(int i = 0; i < jArrseminar.length(); i++){
    JSONObject jobject = jArrseminar.getJSONObject(i);

    String strcategoryid=jobject.getString("categoryid");
    String strcpe=jobject.getString("cpe");

    JSONArray jArrinventory = jobject.getJSONArray("inventory");
    for(int j = 0; j < jArrinventory.length(); j++){

        // access all inventory value here
    }


    JSONArray jArrteachers = jobject.getJSONArray("teachers");
    for(int j = 0; j < jArrteachers.length(); j++){
        JSONObject jobjectteachers = jArrteachers.getJSONObject(i);

        // access all teachers value here
    String strtitel=jobjectteachers.getString("titel");
    String strcompany=jobjectteachers.getString("company");
    String strname=jobjectteachers.getString("name");
    String strid=jobjectteachers.getString("id");
    }
}
JSONObject jObject=newjsonobject(“您的JSON字符串”);
JSONArray jArrseminar=jObj.getJSONArray(“研讨会”);
for(int i=0;i
你在做什么?:)让我们用正确的格式编辑问题!你总是做错事我是新手,没有正确理解说明,所以我现在正在尽力。c.getJSONArray(TAG\u DOZENTEN)中应该有TAG\u教师作为参数而不是TAG_DOZENTEN。如果它是一个拼写错误,请更正它。请您发布实际的代码片段和日志。使用映射器而不是手动解析更好。我个人喜欢是的,我需要手动解析。但无论如何感谢您的提示。我指的是私有静态最终字符串TAG_teachers=“teachers”;+1,很好的发现!混合语言干扰了我的阅读能力。谢谢,但这会引发相同的错误:org.json类型的教师的值为null。JSONObject$1无法转换为JSONArray。@user1854707:这是对json的200%正确解析,正如您所提供的,如果您发布修改后的代码,这将对解决您的问题更有帮助古怪的thanks@user1854707:查看我的编辑答案教师数组的完整解析使用库存它工作正常,库存是一个类型为“库存”:[]的数组,但教师是一个对象,对吗?因为它是类型为“教师”:[{}]@user1854707:您可以看到我的编辑答案,这将非常有效。因为教师是一个数组,它在索引0处包含一个JSONObject