坚持用Java解析json数据
我希望有人能帮助我。我正在尝试解析以下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",
{
"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