java - JsonArray 输出不起作用

标签 java json api jersey jackson

我对 json 还很陌生,所以我不明白我做错了什么。 我希望我的数据 json 输出像这样,但我没有得到很好的结果。

{ "data": [
    ["2014-01", 71173],
    ["2014-02", 57624],
    ["2014-03", 64851],
    ["2014-04", 60486],
    ["2014-05", 60500],
    ["2014-06", 62908],
    ["2014-07", 64818],
    ["2014-08", 59961],
    ["2014-09", 58542],
    ["2014-10", 22050]
  ]  }

这就是我得到的:

{ "data": [
"hallo 0",
"hallo 10",
"hallo 20",
"hallo 30",
"hallo 40",
"hallo 50",
"hallo 60",
"hallo 70",
"hallo 80",
"hallo 90" ] }

这是名为 TestTest 的数据的类

public class TestTest {

    @JsonProperty("data")
    private List<List<Object>> data = new ArrayList<List<Object>>();

    public TestTest(){

    }

    @JsonProperty("data")
    public List<List<Object>> getData() {
        return data;
    }

    @JsonProperty("data")
    public void setData(List<List<Object>> data) {
        this.data = data;
    }

}


    @GET
    @Path("/CallsPerMinuteAsLineChart")
    public Response getTest(){
        TestTest test = new TestTest();
        List<List<Object>> data = new ArrayList<List<Object>>();

        int loop;

        for(loop=0; loop < 100; loop = loop + 10){
            List<Object> dataitem = new ArrayList<>();
            dataitem.add("hallo");
            dataitem.add(loop);
            data.add(dataitem);
        }

        test.setData(data);
        return Response.ok(test).build();
    }

最佳答案

问题不在于你的 json 结构,尽管创建这样的嵌套列表不是一个好的做法,我用 Gson 尝试了你的代码和Jackson

        TestTest test = new TestTest();
        List<List<Object>> data = new ArrayList<List<Object>>();

        int loop;

        for( loop = 0; loop < 100; loop = loop + 10 ){
            List<Object> dataitem = new ArrayList<>();
            dataitem.add( "hallo" );
            dataitem.add( loop );
            data.add( dataitem );
        }

        test.setData( data );

        ObjectMapper mapper = new ObjectMapper();
        String jackson = mapper.writeValueAsString( test );

        System.out.println( new Gson().toJson( test ) );
        System.out.println( jackson );

此代码打印:

{"data":[["hallo",0],["hallo",10],["hallo",20],["hallo",30],["hallo",40],["hallo",50],["hallo",60],["hallo",70],["hallo",80],["hallo",90]]}
{"data":[["hallo",0],["hallo",10],["hallo",20],["hallo",30],["hallo",40],["hallo",50],["hallo",60],["hallo",70],["hallo",80],["hallo",90]]}

这正是您想要的。由于没有人在不了解所有细节的情况下明确解决您的问题,因此我建议您这样使用它:

@GET
@Path("/CallsPerMinuteAsLineChart")
public String getTest(){

在这个方法中,只返回我转换后的 json 字符串。

关于java - JsonArray 输出不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35434014/

相关文章:

java - 嵌套循环内的计算错误

ruby-on-rails - Ruby API 请求中的 Yahoo Oauth - 签名无效

javascript - 返回( dispatch )未解雇

java - 观察者模式和线程

java - 保存或检索以前的 Camel 交换体

java - 如何将sonarlint添加到gradle任务中?

json - 将 shell 变量传递给 JSON 请求以进行 curl ?

json - 雅典娜 : use only a subset of JSON fields

Javascript 数据格式,这是 JSON 吗?

api - 无法使用 Mailgun 接收传入邮件