来自Request的JSON解析错误

时间:2015-01-12 08:20:52

标签: java json exception gson

我正在尝试解析JSON,但它无法正常工作。示例JSON:

{
    "Rpts": {
        "am": [
            {
                "rf":"1",
                "nm":"NS",
                "in":"100.200.210.209",
                "tn":"8080"
            }
        ]
    }
}

像这样提取JSON:

Rpts dem=gsonReq.fromJson(responseJson, Rpts.class);

我的Rptsclass:

public class Rpts
{

private AMS am;

    public AMS getAm() {
        return am;
    }

    public void setAm(AMS am) {
        this.am = am;
    }
}

我的AMS课程:

public class AMS
{
private String rf;
private String nm;
private String in;
private String tn;
public String getRf() {
        return rf;
    }

    public void setRf(String rf) {
        this.rf = rf;
    }

    public String getNm() {
        return nm;
    }

    public void setNm(String nm) {
        this.nm = nm;
    }

    public String getIn() {
        return in;
    }

    public void setIn(String in) {
        this.in = in;
    }

    public String getTn() {
        return tn;
    }

    public void setTn(String tn) {
        this.tn = tn;
    }
}

解析每次都抛出异常。 请指导..

2 个答案:

答案 0 :(得分:1)

在您的JSON中,Rpts包含am ...

的数组

所以你的java类应该是:

public class Rpts {
    private Collection<AMS> am;
    public Collection<AMS> getAm() {
        return am;
    }
    public void setAm(Collection<AMS> am) {
        this.am = am;
    }
}

答案 1 :(得分:0)

RPTS课程

public class Rpts {

    private List<AMS> am;

    /**
     * @return the am
     */
    public List<AMS> getAm() {
        return am;
    }

    /**
     * @param am the am to set
     */
    public void setAm(List<AMS> am) {
        this.am = am;
    }
}

Json已修改 - 从开始时删除了{"Rpts":,从结尾删除了}

测试类

 public static void main(String[] args) {

        String json = "{\"am\": [{\"rf\":\"1\",\"nm\":\"NS\",\"in\":\"100.200.210.209\",\"tn\":\"8080\"}]}";
        ObjectMapper mapper = new ObjectMapper();
        Rpts rpts = new Rpts();
        try {
            rpts = mapper.readValue(json, Rpts.class);
        } catch (JsonParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (JsonMappingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        System.out.println(rpts.getAm().get(0).getRf());
        System.out.println(rpts.getAm().get(0).getNm());
    }

<强>输出

1
NS