从Java中的HTTP响应中解析JSON

时间:2016-02-21 00:33:02

标签: java json http httpresponse json-simple

您好我正在使用Client Http(apache)和json-simple。

我想访问json响应的属性,然后使用它们。

知道怎么做吗?我读了一篇帖子但没有像我一样工作。

这是我的回答json:

{"Name":"myname","Lastname":"mylastname","Age":19}

这是我的代码java:

DefaultHttpClient httpClient = new DefaultHttpClient();

HttpGet getRequest = new HttpGet(
    "http://localhost:8000/responsejava");
getRequest.addHeader("accept", "application/json");

HttpResponse response = httpClient.execute(getRequest);

if (response.getStatusLine().getStatusCode() != 200) {
    throw new RuntimeException("Failed : HTTP error code : "
             + response.getStatusLine().getStatusCode());
}

BufferedReader br = new BufferedReader(
    new InputStreamReader( 
        (response.getEntity().getContent())
    )
);

StringBuilder content = new StringBuilder();
String line;
while (null != (line = br.readLine())) {
    content.append(line);
}

Object obj=JSONValue.parse(content.toString());
JSONObject finalResult=(JSONObject)obj;
System.out.println(finalResult);

httpClient.getConnectionManager().shutdown();

我打印了null,我做错了什么?

3 个答案:

答案 0 :(得分:3)

更好,更轻松地使用Gson

Gson gson = new Gson;
NameBean name = gson.fromJson(content.toString(),NameBean.class)

NameBean是您持久保存json字符串的对象。

public class NameBean implements Serializable{
public String name;
public String lastname;
public Int age;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getLastname() {
    return lastname;
}

public void setLastname(String lastname) {
    this.lastname = lastname;
}

public Int getAge() {
    return age;
}

public void setAge(Int age) {
    this.age = age;
}

}

答案 1 :(得分:2)

而不是

Object obj=JSONValue.parse(content.toString());
JSONObject finalResult=(JSONObject)obj;
System.out.println(finalResult);

试试这个:

JSONObject jsonObject = new JSONObject(content.toString());
System.out.println(jsonObject.getString("Name") + " " jsonObject.getString("Lastname") + " " + jsonObject.getInt("Age"));

答案 2 :(得分:0)

我非常推荐建立在apache http api上的http-request

HttpRequest<Data> httpRequest = HttpRequestBuilder.createGet(yourUri, Data.class)
    .addDefaultHeader("accept", "application/json")
    .build();

public void send(){
   ResponseHandler<Data> responseHandler = httpRequest.execute();
   Data data = responseHandler.orElseThrow(); // returns the data or throws ResponseException If response code is not success
}
你得到的

Data课程。

public Data{
   private String Name;
   private String Lastname;
   private int Age;

   // getters and setters
}

我还建议观看我的回答here如果你想得到响应为字符串