为post请求创建json

时间:2014-09-12 22:44:53

标签: java json jackson

我正在尝试将JSON字符串发送到post方法以便接收航班信息,我有以下json示例我必须修改以提出不同的请求

{
  "request": {
    "passengers": {
      "adultCount": 1
    },
    "slice": [
      {
        "origin": "BOS",
        "destination": "LAX",
        "date": "YYYY-MM-DD"
      },
      {
        "origin": "LAX",
        "destination": "BOS",
        "date": "YYYY-MM-DD"
      }
    ]
  }
}

我有以下课程

public class Request {
    public class Passengers{
        private int adultCount;

        public int getAdultCount() {
            return adultCount;
        }

        public void setAdultCount(int adultCount) {
            this.adultCount = adultCount;
        }
    }

    private List<Slice> slice;

    public List<Slice> getSlice() {
        return slice;
    }

    public void setSlice(List<Slice> slice) {
        this.slice = slice;
    }


    public static class Slice{
        private String origin;
        private String destination;
        private String date;

        public String getOrigin() {
            return origin;
        }

        public void setOrigin(String origin) {
            this.origin = origin;
        }

        public String getDestination() {
            return destination;
        }

        public void setDestination(String destination) {
            this.destination = destination;
        }

        public String getDate() {
            return date;
        }

        public void setDate(String date) {
            this.date = date;
        }
    }
}

如何映射此类以设置值并使用相同的格式创建不同的json?我正在尝试杰克逊但我没有得到合适的输出

2 个答案:

答案 0 :(得分:1)

Here's the JSON format.好好学习。

JSON字符串映射到Java String。 JSON编号映射到Java Number类型。 JSON数组映射到Collection类型或数组类型。 JSON对象映射到Java Map类型或任何其他Java类型(之前未提及)。

所以像

这样的Java类
class Foo {
    String name;
    int[] array;
    Map<String, List<Double>> ref;
}

映射到

{
    "name" : "string",
    "array" : [1, 2, 3],
    "ref" : {
        "val1" : [1.2, 3.4]
    }
}

您的JSON是根目录下的JSON对象。它包含

"request": {

这是一个键值对,其中键是JSON字符串,值是JSON对象。

这应该告诉您需要一个带有名为request的字段的Java对象,该字段应该引用另一个对象。递归地执行此分析,您将获得Java对象格式。

答案 1 :(得分:0)

使用Gson可以大大简化您的生活,Gson的json库可以根据您的类图进行所有解析/编码。它还支持递归,它允许您定义更复杂的结构,如arraylist,list,hashtable。一切都以自己的方式运作。

private String field = "field_1";
priavate String field2 = "field_2";
ArraList<FIELDS> field_list = new ArrayList<FIELDS>();

会引用:

{
  field : "field_1",
  field2 : "field_2"
  field_list : [
    etc...
  ]
}