0

我是 JSON Web 服务的新手。我想将下面的简单 JSON 结构转换为 Java 字符串。虽然我提到了很多网站,但它仍然给我增加了更多的困惑。我正在使用 GSON 进行解析,但总是得到

“java.lang.IllegalStateException:这不是 JSON 数组。”

请协助我解决问题。

JSON数据:{"data1":"100","data2":"hello"}

JAVA代码:

private void getPostMessage(String msg) {
        try {       
                EmployeeBean emp;
                String json;

            Client client = Client.create();
            WebResource webResource = client.resource("http://localhost:8080/JSON_EMP_Serv/rest/server/post/");

            ClientResponse response = webResource.type("application/json").post(ClientResponse.class,msg);
            if (response.getStatus() != 201) {
                throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
            }

            String output = response.getEntity(String.class);
            System.out.println("\n============get POST Message Response============");
            System.out.println(output);

            /******* JSON PARSER **********/


           Gson gson = new Gson();
           JsonParser parser = new JsonParser();
           JsonArray Jarray = parser.parse(output).getAsJsonArray();

           ArrayList<EmployeeBean> lcs = new ArrayList<EmployeeBean>();

         for(JsonElement obj : Jarray )
            {
                emp = gson.fromJson(obj,EmployeeBean.class);

                lcs.add(emp);

            }
            int length=lcs.size();
            System.out.println("ARRAY LENGTH"+length);
            for(int i=0;i<length;i++)
            {
                System.out.println(lcs.get(i)+"\n");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
}

员工豆类:

package com.pats.client.bean;

import java.util.ArrayList;
import java.util.List;

import com.google.gson.annotations.SerializedName;

    public class EmployeeBean {


    private String data1= null;
    private String data2 = null;

    public EmployeeBean(String data1,String data2)
    {

        this.data1=data1;
        this.data2=data2;
    }

    public String getData1()
    { return data1; }
    public String getData2()
    { return data2; }
    public void setData1(String data1)
    {
        this.data1=data1;
    }
    public void setData2(String data2)
    {
        this.data2=data2;
    }
    @Override
    public String toString() {
         //return "[data1=" + data1 + ", data2=" + data2 + "]";

        return " DATA-1 : " + this.data1 + "DATA-2 : " + this.data2;
    }

}
4

1 回答 1

3

显然,关键是您的数据不是 JSON 数组。

{"data1":"100","data2":"hello"}

相反,它是一个 JSON 对象,但您正试图解析它并获得一个JsonArray. 您可以更改它并改用getAsJsonObject()它,但从您的代码来看,我认为您的起始数据是错误的。我猜你应该有一个员工数组,所以正确的数据应该是这样的:

[{"data1":"100","data2":"hello"}]
于 2013-12-11T13:30:27.117 回答