java - Jersey - Json 到 java 字符串

标签 java json jersey-client jersey-2.0

我是 JSON Web 服务新手。我想将下面的简单 JSON 结构转换为 Java 字符串。尽管我引用了很多网站,但这仍然给我带来了更多的困惑。我使用 GSON 进行解析,但总是得到

"java.lang.IllegalStateException: This is not a JSON Array."

请协助我解决问题。

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;
    }

}

最佳答案

很明显,重点是您的数据不是 JSON 数组。

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

它是一个 JSON 对象,但您正在尝试解析它并获取一个 JsonArray。您可以更改此设置并使用 getAsJsonObject() 代替,但从您的代码来看,我认为您的起始数据是错误的。我猜你应该有一组员工,所以正确的数据可能应该是这样的:

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

关于java - Jersey - Json 到 java 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20520336/

相关文章:

java - 带有 Sql Server 2008 的 Jdbc 连接池失败

java - 将 JSON 从 WebResource 解析为可用的 Java 对象

json - 为什么我收到此错误 : POST https://api. openai.com/v1/chat/completions 400?

java - 泽西客户端非阻塞

java - 如何在 Jersey Client 中引发自定义异常?

java - Jersey WS 问题与 Jetty/Tomcat : SEVERE Warnings

java - Hazelcast 的性能是否足以支持实时游戏?

java - Spring Webflux WebFilterChain 中的 URL 模式过滤

java - 当我使用 RequestDispatcher 包含 html 文件时,如何修复字符集编码?

php - 从没有 'json_decode' 或 PEAR 的 'Services_JSON' 的 PHP 解析 JSON