2016-08-05 8 views
0

My Json имеет следующий типа:Как разобрать json в Java? Я попытался с помощью простой, но JSON я получаю исключение нулевого указателя

{ 
    "result": [ 
    { 
     "skills": "alexa", 
     "brand": "amazon", 
     "name": "jack", 
     "type": "noob", 
     "id": "1230", 
     "date": "8-5-2016" 
    } 
    ] 
} 

Я хочу, чтобы получить имя и идентификатор из этого json.I попытался с помощью простой и JSON gson гайки когда Я пытаюсь выполнить уровень 2, т. Е. Получить доступ к переменной «name». Я получаю ошибку нулевого указателя ссылки.

Также обратите внимание, что я извлекаю это из URL-адреса. Спасибо!


Мой Java код

JSONObject obj1= new JSONObject(line); 
    JSONArray cobj = (JSONArray)obj1.getJSONArray("result"); 
    JSONObject ccobj = (JSONObject)cobj.get(1); 
    System.err.println(ccobj.getString("result")); 
+2

Сам json бесполезен без кода Java, вызывающего вашу ошибку. –

+0

Просьба указать ваш код. – Nikhil

+0

@ Нихил, пожалуйста, посмотрите код – jack

ответ

1

Ваш JSON не является действительным.

Error: Parse error on line 6: 
...mazon"  },  "name": "jack",  "type": 
---------------------^ 
Expecting 'EOF', '}', ',', ']', got ':' 

Как только вы исправите это, я бы предложил использовать Gson.

+0

, пожалуйста, посмотрите на новый json. Теперь это действительный json. Поскольку я не хотел публиковать оригинальный json, я отредактировал его и, следовательно, создал ошибку – jack

0

Создать эти классы

-----------------------------------com.example.Example.java----------------------------------- 

package com.example; 

import java.util.ArrayList; 
import java.util.List; 
import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Example { 

@SerializedName("result") 
@Expose 
private List<Result> result = new ArrayList<Result>(); 

/** 
* 
* @return 
* The result 
*/ 
public List<Result> getResult() { 
return result; 
} 

/** 
* 
* @param result 
* The result 
*/ 
public void setResult(List<Result> result) { 
this.result = result; 
} 

} 
-----------------------------------com.example.Result.java----------------------------------- 

package com.example; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 

public class Result { 

@SerializedName("skills") 
@Expose 
private String skills; 
@SerializedName("brand") 
@Expose 
private String brand; 
@SerializedName("name") 
@Expose 
private String name; 
@SerializedName("type") 
@Expose 
private String type; 
@SerializedName("id") 
@Expose 
private String id; 
@SerializedName("date") 
@Expose 
private String date; 

/** 
* 
* @return 
* The skills 
*/ 
public String getSkills() { 
return skills; 
} 

/** 
* 
* @param skills 
* The skills 
*/ 
public void setSkills(String skills) { 
this.skills = skills; 
} 

/** 
* 
* @return 
* The brand 
*/ 
public String getBrand() { 
return brand; 
} 

/** 
* 
* @param brand 
* The brand 
*/ 
public void setBrand(String brand) { 
this.brand = brand; 
} 

/** 
* 
* @return 
* The name 
*/ 
public String getName() { 
return name; 
} 

/** 
* 
* @param name 
* The name 
*/ 
public void setName(String name) { 
this.name = name; 
} 

/** 
* 
* @return 
* The type 
*/ 
public String getType() { 
return type; 
} 

/** 
* 
* @param type 
* The type 
*/ 
public void setType(String type) { 
this.type = type; 
} 

/** 
* 
* @return 
* The id 
*/ 
public String getId() { 
return id; 
} 

/** 
* 
* @param id 
* The id 
*/ 
public void setId(String id) { 
this.id = id; 
} 

/** 
* 
* @return 
* The date 
*/ 
public String getDate() { 
return date; 
} 

/** 
* 
* @param date 
* The date 
*/ 
public void setDate(String date) { 
this.date = date; 
} 

} 

тогда вы могли бы сделать что-то вроде этого

Gson gson = new Gson(); 
Example ex = gson.fromJson(jsonString,Example.class); 

затем получить результаты из примера объекта, перебирать, вытащить все, что вы хотите.

+0

благодарю вас за помощь – jack