解析JSON与杰克逊的Andr​​oid

解析JSON与杰克逊的Andr​​oid

本文介绍了解析JSON与杰克逊的Andr​​oid的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

I'm开发使用了大量的JSON的,我是用GSON解析一个应用程序,但它很慢,现在我正尝试使用杰克逊,在汇入作业第一次,我听说过,所以我不知道如何使用它非常好。
我的JSON像汇入作业:

I´m developing an app that uses a lot of json, I was using Gson to parse, but it was really slow and now I´m trying to use Jackson, it´s the first time that I heard of it, so I don´t know how to use it very well.My json it´s like:

{
    "action": "login",
    "status": true,
    "message": "OK",
    "duration": 144,
    "response": {
        "token": "b6a1e3b87c86531d91afa91bb23aca46"
    }
}

和我的类反序列化一样汇入作业:

And my class to deserialize it´s like:

public class HttpWebServiceObject {
    private String action;
    private boolean status;
    private String message;
    private String duration;
    private String response;

    //getters and setters

}

有人可以帮助我?

Someone could help me with this?

先谢谢了。

编辑:

我能有这样一个JSON太:

I can have a json like this too:

{
    "action": "getUserFollowers",
    "status": true,
    "message": "OK",
    "duration": 187,
    "response": [
        {
            "id": "20810",
            "name": "thyago",
            "username": "thyago",
            "location": "guarujá,brasil",
            "photo": "profile/48d15179063126b40f6a5b1bbdea7f1e.jpg",
            "following": false,
            "numfollowing": 3,
            "numfollowers": 7
        },
        {
            "id": "933",
            "name": "Edson Alves",
            "username": "prazermatheus",
            "location": "Rio de Janeiro, Brasil.",
            "photo": "profile/bcc90c29054781adcd4569bb59251dba.jpg",
            "following": false,
            "numfollowing": 2689,
            "numfollowers": 1373
        },
        {
            "id": "753",
            "name": "Yasmim Teófilo",
            "username": "yasmim_gomesz",
            "location": "Pacajus, Brasil",
            "photo": "/profile/default.png",
            "following": false,
            "numfollowing": 1,
            "numfollowers": 6
        },
        {
            "id": "531",
            "name": "Muriel Aragão",
            "username": "muriaragao",
            "location": "Salvador, Brasil",
            "photo": "profile/0f6b504736723ea80c9cd15dabb3f0c5.jpg",
            "following": false,
            "numfollowing": 348,
            "numfollowers": 32
        },
        {
            "id": "492",
            "name": "shashank",
            "username": "shashank",
            "location": "india",
            "photo": "/profile/default.png",
            "following": false,
            "numfollowing": 5,
            "numfollowers": 3
        },
        {
            "id": "307",
            "name": "Clineu Iansen",
            "username": "clineu",
            "location": "Curitiba, Brazil",
            "photo": "profile/3d37a1e9c795a83c672ecacf575ee30a.jpg",
            "following": false,
            "numfollowing": 57,
            "numfollowers": 946
        },
        {
            "id": "277",
            "name": "maharshi",
            "username": "india",
            "location": "india",
            "photo": "profile/86d403617a30469f11403f0c9c65141b.jpg",
            "following": true,
            "numfollowing": 16,
            "numfollowers": 1848
        },
        {
            "id": "57",
            "name": "Alexandre",
            "username": "xandyhsf",
            "location": "Itajai, Brasil",
            "photo": "/profile/default.png",
            "following": false,
            "numfollowing": 51,
            "numfollowers": 16
        },
        {
            "id": "34",
            "name": "Karina Ceconello Ton",
            "username": "KarinaCeconello",
            "location": "Quatro Barras/Brasil",
            "photo": "profile/9bc1fb97263dc9a242766c87e4acf1c4.jpg",
            "following": false,
            "numfollowing": 5,
            "numfollowers": 198
        },
        {
            "id": "25",
            "name": "Thiago Bodruk",
            "username": "ThiagoBodruk",
            "location": "Quatro Barras, Brazil",
            "photo": "profile/56111881a4ebe0f0fc5cb85faa262e17.jpg",
            "following": false,
            "numfollowing": 26,
            "numfollowers": 221
        }
    ]
}

我怎么能这样做一般的解析来deseriliaze这个,只是采取应对作为一个字符串?

How I could do a general parse to deseriliaze this and just take response as a string?

推荐答案

原来这就是你的 HttpWebServiceObject.java Response.java 应该像。这是使用这需要JSON并将其转换为的POJO生成。一旦你有这两个类则可以使用 ObjectMapper 来映射JSON字符串这些类。

So this is what your HttpWebServiceObject.java and Response.java should look like. This was generated using this website which takes json and converts it to pojos. Once you have these two classes you can then use an ObjectMapper to map the json string to these classes.

-----------------------------------com.example.HttpWebServiceObject.java-----------------------------------

-----------------------------------com.example.HttpWebServiceObject.java-----------------------------------

package com.example;

import java.util.HashMap;
import java.util.Map;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"action",
"status",
"message",
"duration",
"response"
})
public class HttpWebServiceObject {

@JsonProperty("action")
private String action;
@JsonProperty("status")
private Boolean status;
@JsonProperty("message")
private String message;
@JsonProperty("duration")
private Integer duration;
@JsonProperty("response")
private Response response;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

/**
*
* @return
* The action
*/
@JsonProperty("action")
public String getAction() {
return action;
}

/**
*
* @param action
* The action
*/
@JsonProperty("action")
public void setAction(String action) {
this.action = action;
}

/**
*
* @return
* The status
*/
@JsonProperty("status")
public Boolean getStatus() {
return status;
}

/**
*
* @param status
* The status
*/
@JsonProperty("status")
public void setStatus(Boolean status) {
this.status = status;
}

/**
*
* @return
* The message
*/
@JsonProperty("message")
public String getMessage() {
return message;
}

/**
*
* @param message
* The message
*/
@JsonProperty("message")
public void setMessage(String message) {
this.message = message;
}

/**
*
* @return
* The duration
*/
@JsonProperty("duration")
public Integer getDuration() {
return duration;
}

/**
*
* @param duration
* The duration
*/
@JsonProperty("duration")
public void setDuration(Integer duration) {
this.duration = duration;
}

/**
*
* @return
* The response
*/
@JsonProperty("response")
public Response getResponse() {
return response;
}

/**
*
* @param response
* The response
*/
@JsonProperty("response")
public void setResponse(Response response) {
this.response = response;
}

@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

}

-----------------------------------com.example.Response.java-----------------------------------

-----------------------------------com.example.Response.java-----------------------------------

package com.example;

import java.util.HashMap;
import java.util.Map;
import javax.annotation.Generated;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Generated("org.jsonschema2pojo")
@JsonPropertyOrder({
"token"
})
public class Response {

@JsonProperty("token")
private String token;
@JsonIgnore
private Map<String, Object> additionalProperties = new HashMap<String, Object>();

/**
*
* @return
* The token
*/
@JsonProperty("token")
public String getToken() {
return token;
}

/**
*
* @param token
* The token
*/
@JsonProperty("token")
public void setToken(String token) {
this.token = token;
}

@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() {
return this.additionalProperties;
}

@JsonAnySetter
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}

}

这篇关于解析JSON与杰克逊的Andr​​oid的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-29 17:56