精华内容
下载资源
问答
  • JackJson在对JSON数据进行生成与解析时,所需使用的相关jar包
  • jackjson2.2.3

    2020-09-19 10:14:54
    jackjson2.2.3下载
  • jackjson2.6 jar包

    2017-06-15 17:41:54
    jackjson2.6 jar包
  • JackJson.zip

    2019-06-26 22:18:16
    Java解析json数据使用的JackJson 库数据类包含3个重要jar包
  • jackjson一个强大的json转其它类型,方便,快捷
  • JackJson

    2018-04-20 14:01:53
    jackjson https://github.com/FasterXML/jackson-docs https://github.com/FasterXML/jackson-core https://github.com/FasterXML/jackson-databind https://github.com/FasterXML/jackson-annotations Objec...

    jackjson

    https://github.com/FasterXML/jackson-docs
    https://github.com/FasterXML/jackson-core
    https://github.com/FasterXML/jackson-databind
    https://github.com/FasterXML/jackson-annotations

    ObjectMapper

    http://www.studytrails.com/java/json/jackson-create-json/
    http://tutorials.jenkov.com/java-json/jackson-objectmapper.html
    JackJson - JSON to Java

    Annotation

    https://github.com/FasterXML/jackson-docs/wiki/JacksonAnnotations
    http://tutorials.jenkov.com/java-json/jackson-annotations.html

    general annotationread or writedescription
    @JsonIgnoreread + write忽略某个字段
    @JsonIgnorePropertiesread + write忽略多个字段,ignoreUnknown=true可未知属性
    @JsonPropertyread + write重命名字段
    @JsonNamingread + write自定义属性序列化或反序列化规则
    @JsonFormatread + write时间格式化,有时区问题
    @JsonIncludewrite忽略满足条件的属性,如null
    @JsonValuewrite序列化对象为返回值,如把Enum序列化为code
    @JsonCreatorread反序列化指定值为对象,如把code序列化为Enum
    @JsonDeserializeread反序列为指定的接口或是泛型时,用来指定实际的类型

    Features

    JsonParser Features

    general featruedefaultdescription
    ALLOW_UNQUOTED_FIELD_NAMESfalse允许字段名称没有双引号
    ALLOW_SINGLE_QUOTESfalse允许字段名称和值使用单引号
    ALLOW_NUMERIC_LEADING_ZEROSfalse允许以0开头的数字

    Serialization Features

    general featruedefaultdescription
    INDENT_OUTPUTfalse格式化输出json,测试时有用

    Deserialization Features

    general featruedefaultdescription
    FAIL_ON_UNKNOWN_PROPERTIEStrue有未知的属性时报错

    Serialization Inclusion

    序列化时,是否显示某些属性,如Include.NOT_NULL表示如果字段值为null,则序列化输出时不显示该字段
    全局设置:setSerializationInclusion(Include.NON_NULL)
    单个设置:@JsonInclude(JsonInclude.Include.NON_NULL)

    Date Format

    默认在java.uti.Date和时间戳之间序列化和反序列化
    全局设置:setDateFormat(new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”))
    单个设置: @JsonFormat(pattern = “yyyy-MM-dd HH:mm:ss”,timezone = “Asia/Shanghai”)

    @JsonFormat有时区问题,参考:
    https://stackoverflow.com/questions/46011703/set-current-timezone-to-jsonformat-timezone-value
    https://github.com/FasterXML/jackson-databind/issues/1266

    Property Naming Strategy

    自定义属性序列化策略,比如下划线转骆峰
    全局设置: setPropertyNamingStrategy(PropertyNamingStrategy.SnakeCaseStrategy.SNAKE_CASE)
    单个设置:@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)

    General Configure

    ObjectMapper objectMapper = new ObjectMapper()
                .configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true)
                .configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true)
                .configure(JsonParser.Feature.ALLOW_NUMERIC_LEADING_ZEROS, true)
                .configure(SerializationFeature.INDENT_OUTPUT,true)
                .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false)
                .setSerializationInclusion(JsonInclude.Include.NON_NULL)
                .setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
    展开全文
  • jackjson 2.2.3 jar 全部

    2014-04-02 08:56:04
    jackson-core-2.2.3.jar jackson-annotations-2.2.3.jar jackson-databind-2.2.3.jar
  • JSON工具包-jackjson&fastjson 两种json工具
  • Spring Boot Json 之 Jackjson Fastjson1 新建 Spring Boot Maven 示例工程项目2 编写代码用于测试示例2.1 用户实体类2.2 控制层代码3 Jackson3.1 依赖引入 Jackson3.2 配置 Jackson3.3 Jackson 序列化3.4 Jackson ...


    Json 是目前互联网应用使用最为广泛的信息交换格式之一。 Spring Boot 内置了 JacksonJson在应用中主要体现在以下功能:

    1. 序列化
    2. 反序列化
    3. 字段格式化
    4. 验证自动化

    目前长用的 Json 组件包括

    1. Jackson
    2. Gson
    3. FastJson
    4. JSON-B

    本章主要讨论以上 4 中 Json 组件的 4 中功能。

    本项目源码 github 下载

    1 新建 Spring Boot Maven 示例工程项目

    注意:是用来 IDEA 开发工具

    1. File > New > Project,如下图选择 Spring Initializr 然后点击 【Next】下一步
    2. 填写 GroupId(包名)、Artifact(项目名) 即可。点击 下一步
      groupId=com.fishpro
      artifactId=json
    3. 选择依赖 Spring Web Starter 前面打钩。
    4. 项目名设置为 spring-boot-study-json.

    2 编写代码用于测试示例

    2.1 用户实体类

    新建两个实体类,用户类、用户地址类,他们的关系是父子关系

    User 路径 src/main/java/com/fishpro/json/dto/User.java)

    public class User {
        private Integer userId;
    
        private String username;
    
        private List<Address> addresses;
    
    
        private Calendar created = new GregorianCalendar();
    
    
        public User(Integer userId,String username){
            this.userId=userId;
            this.username=username;
        }
        public User(Integer userId,String username,List<Address> addresses){
            this.userId=userId;
            this.username=username;
            this.addresses=addresses;
        }
        public Integer getUserId() {
            return userId;
        }
    
        public void setUserId(Integer userId) {
            this.userId = userId;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        public List<Address> getAddresses() {
            return addresses;
        }
    
        public void setAddresses(List<Address> addresses) {
            this.addresses = addresses;
        }
    
        public Calendar getCreated() {
            return created;
        }
    
        public void setCreated(Calendar created) {
            this.created = created;
        }
    }
    
    

    Address (路径 src/main/java/com/fishpro/json/dto/Address.java)

    public class Address {
        private String street;
        private String zipcode;
        private String mobile;
    
        public Address(String street,String zipcode,String mobile){
            this.street=street;
            this.zipcode=zipcode;
            this.mobile=mobile;
        }
        public String getStreet() {
            return street;
        }
    
        public void setStreet(String street) {
            this.street = street;
        }
    
        public String getZipcode() {
            return zipcode;
        }
    
        public void setZipcode(String zipcode) {
            this.zipcode = zipcode;
        }
    
        public String getMobile() {
            return mobile;
        }
    
        public void setMobile(String mobile) {
            this.mobile = mobile;
        }
    }
    

    2.2 控制层代码

    UserController (路径 src/main/java/com/fishpro/json/controller/UserController.java)

    @RequestMapping("/user")
    @RestController
    public class UserController {
    
        @GetMapping("/get")
        public User get(){
            List<Address> addressList=new ArrayList<>();
            addressList.add(new Address("江苏省南京市玄武大道1000号","201001","1801989098"));
            addressList.add(new Address("江苏省南京市玄武大道1001号","201001","1811989098"));
            User user = new User(1, "fishpro",addressList);
            return  user;
        }
    }
    

    运行 右键点击 JsonApplication > Run JsonApplication 在浏览器中输入 http://localhost:8086/user/get 系统直接返回了json格式,那么 Spring Boot 中默认就是哟合那个了 Jackson 来处理。

    {
    	"userId": 1,
    	"username": "fishpro",
    	"addresses": [{
    		"street": "江苏省南京市玄武大道1000号",
    		"zipcode": "201001",
    		"mobile": "1801989098"
    	}, {
    		"street": "江苏省南京市玄武大道1001号",
    		"zipcode": "201001",
    		"mobile": "1811989098"
    	}],
    	"created": "2019-08-13T14:40:50.901+0000"
    }
    

    3 Jackson

    3.1 依赖引入 Jackson

    无须引入,Spring Boot默认采用了 Jackson 来处理诸如 @RequestBody @ResponseBody

    3.2 配置 Jackson

    如 2。2 代码示例,默认采用了 Jackson ,但返回的日期格式没有展示人们常用的格式,就要我们从 applicaiton中配置他的展示格式。

    server.port = 8086
    #jackson
    #日期格式化
    spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
    #spring.jackson.date-format=yyyy-MM-dd
    #格式化输出
    spring.jackson.serialization.indent_output=true
    #忽略无法转换的对象
    spring.jackson.serialization.fail_on_empty_beans=false
    #设置空如何序列化
    spring.jackson.defaultPropertyInclusion=NON_EMPTY
    #允许对象忽略json中不存在的属性
    spring.jackson.deserialization.fail_on_unknown_properties=false
    #允许出现特殊字符和转义符
    spring.jackson.parser.allow_unquoted_control_chars=true
    #允许出现单引号
    spring.jackson.parser.allow_single_quotes=true
    

    运行 右键点击 JsonApplication > Run JsonApplication 在浏览器中输入 http://localhost:8086/user/get 系统直接返回了json格式, 现在 created 以 yyy-MM-dd HH:mm:ss 展示给我们了。

    {
      "userId" : 1,
      "username" : "fishpro",
      "addresses" : [ {
        "street" : "江苏省南京市玄武大道1000号",
        "zipcode" : "201001",
        "mobile" : "1801989098"
      }, {
        "street" : "江苏省南京市玄武大道1001号",
        "zipcode" : "201001",
        "mobile" : "1811989098"
      } ],
      "created" : "2019-08-13 14:51:48"
    }
    

    3.3 Jackson 序列化

    如何单独的使用序列化和反序列化功能呢

     //测试 Jackson 序列化
            ObjectMapper mapper=new ObjectMapper();//定义一个转化对象
            List<Address> addressList=new ArrayList<>();
            addressList.add(new Address("江苏省南京市玄武大道1000号","201001","1801989098"));
            addressList.add(new Address("江苏省南京市玄武大道1001号","201001","1811989098"));
            User user = new User(1, "fishpro",addressList);
            try {
                String json = mapper.writeValueAsString(user);
                System.out.println(json);
    
            }catch (Exception e){
                e.printStackTrace();
            }
    

    3.4 Jackson 反序列化

     //测试 Jackson 序列化
            ObjectMapper mapper=new ObjectMapper();//定义一个转化对象
            //测试 Jackjson 反序列化
            String json="{\"userId\":2,\"username\":\"程序员\",\"addresses\":[{\"street\":\"江苏省南京市玄武大道1000号\",\"zipcode\":\"201001\",\"mobile\":\"1801989098\"},{\"street\":\"江苏省南京市玄武大道1001号\",\"zipcode\":\"201001\",\"mobile\":\"1811989098\"}],\"created\":1565709784274}";
    
            try {
                User user2 = mapper.readValue(json, User.class);
                System.out.println(user2);
    
            }catch (Exception e){
                e.printStackTrace();
            }
    

    3.5 常用注解

    Jackson提供了一系列注解,方便对JSON序列化和反序列化进行控制,下面介绍一些常用的注解。

    @JsonIgnore

    @JsonIgnore 此注解用于属性上,作用是进行JSON操作时忽略该属性。

    @JsonFormat

    @JsonFormat 此注解用于属性上,作用是把Date类型直接转化为想要的格式,如@JsonFormat(pattern = “yyyy-MM-dd HH-mm-ss”)。

    例如为字段单独指定时间格式

        /**更新时间 用户可以点击更新,保存最新更新的时间。**/
        @JsonFormat(pattern="yyyy-MM-dd")
        private Calendar updated = new GregorianCalendar();
    

    @JsonProperty

    @JsonProperty 此注解用于属性上,作用是把该属性的名称序列化为另外一个名称,如把trueName属性序列化为name,@JsonProperty(“name”)。

    3.6 问题:

    com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of com.fishpro.json.dto.User (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)

    因为实体类没有显示的 无参数构造函数,所有报错了,解决方案就是在实体类中增加无参数构造函数,例如本示例中

    public User(){}
    
    public Address(){}
    

    4 fastjson

    fastjson 是 阿里巴巴的开源项目。在国内使用非常广泛。

    4.1 依赖引入

    <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.58</version>
    </dependency>
    

    4.2 fastjson 序列化

    List<Address> addressList=new ArrayList<>();
            addressList.add(new Address("江苏省南京市玄武大道1000号","201001","1801989098"));
            addressList.add(new Address("江苏省南京市玄武大道1001号","201001","1811989098"));
            User user = new User(1, "fishpro",addressList);
            //测试 Fastjson 序列化
            System.out.println("测试 Fastjson 序列化");
            System.out.println(JSON.toJSONString(user));
    

    输出结果

    {"addresses":[{"mobile":"1801989098","street":"江苏省南京市玄武大道1000号","zipcode":"201001"},{"mobile":"1811989098","street":"江苏省南京市玄武大道1001号","zipcode":"201001"}],"created":1565787589602,"userId":1,"username":"fishpro"}
    

    4.3 fastjson 反序列化

            String json="{\"userId\":2,\"username\":\"程序员\",\"addresses\":[{\"street\":\"江苏省南京市玄武大道1000号\",\"zipcode\":\"201001\",\"mobile\":\"1801989098\"},{\"street\":\"江苏省南京市玄武大道1001号\",\"zipcode\":\"201001\",\"mobile\":\"1811989098\"}],\"created\":1565709784274}";
    
            //测试 Fastjson 反序列化
            System.out.println("测试 Fastjson 反序列化");
            User user3 = JSON.parseObject(json,User.class);
            System.out.println(user3);
    

    4.4 fastjson 的注解

    上面序列化、反序列化使用的实体类的注解还是 jackjson 中使用的。为了说明注解问题,我们新疆一个类 Person

    @JSONField

    @JSONField 作用在类的属性上,是类的属性与输出的 Json 的映射。JSONField 的几个属性

    名称用途
    name指定那么的时候表示 json 输出使用此 name @JSONField(name=“ID”)
    format格式化日期 @JSONField(format=“yyyyMMdd”)
    serializefalse 表示不序列化 @JSONField(serialize=false)
    deserializefalse 表示不反序列化 @JSONField(deserialize=false)
    ordinalf使用 ordinal 指定字段的顺序 @JSONField(ordinal = 3)
    
    public class Person {
    
        @JSONField(name = "age")
        private int age;
    
        @JSONField(name = "full_name",ordinal = 1)
        private String fullName;
    
        @JSONField(name = "date_of_birth",format = "yyyy-MM-dd")
        private Date dateOfBirth;
    
        @JSONField(serialize = false)
        private String alias;
    
        public Person(int age, String fullName, Date dateOfBirth) {
            super();
            this.age = age;
            this.fullName= fullName;
            this.dateOfBirth = dateOfBirth;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getFullName() {
            return fullName;
        }
    
        public void setFullName(String fullName) {
            this.fullName = fullName;
        }
    
        public Date getDateOfBirth() {
            return dateOfBirth;
        }
    
        public void setDateOfBirth(Date dateOfBirth) {
            this.dateOfBirth = dateOfBirth;
        }
    
        public String getAlias() {
            return alias;
        }
    
        public void setAlias(String alias) {
            this.alias = alias;
        }
    }
    

    4.5 BeanToArray 功能

    System.out.println("测试 Fastjson person 注解");
            Person person=new Person(100,"dashen",new Date()); 
            Person person2=new Person(98,"dashen2",new Date());
            Person person3=new Person(88,"dashen3",new Date());
            List<Person> personList=new ArrayList<>();
            personList.add(person);
            personList.add(person2);
            personList.add(person3);
            System.out.println(JSON.toJSONString(personList, SerializerFeature.BeanToArray));
    

    输出

    {"age":100,"date_of_birth":"2019-08-14","full_name":"dashen"}
    

    4.6 直接创建 JSON 对象

     System.out.println("测试 Fastjson 生成 json");
            JSONArray jsonArray = new JSONArray();
            for (int i = 0; i < 2; i++) {
                JSONObject jsonObject = new JSONObject();
                jsonObject.put("AGE", 10);
                jsonObject.put("FULL NAME", "Doe " + i);
                jsonObject.put("DATE OF BIRTH", "2019/08/12 12:12:12");
                jsonArray.add(jsonObject);
            }
            System.out.println(jsonArray.toJSONString());
    

    生成

    [{"DATE OF BIRTH":"2019/08/12 12:12:12","FULL NAME":"Doe 0","AGE":10},{"DATE OF BIRTH":"2019/08/12 12:12:12","FULL NAME":"Doe 1","AGE":10}]
    

    4.7 过滤器 ValueFilter

    名称说明
    PropertyPreFilter根据PropertyName判断是否序列化
    PropertyFilter根据PropertyName和PropertyValue来判断是否序列化
    NameFilter修改Key,如果需要修改Key,process返回值则可
    ValueFilter修改Value
    BeforeFilter序列化时在最前添加内容
    AfterFilter序列化时在最后添加内容

    过滤器一般用于特定场景用途。

    本项目源码 github 下载


    参考:

    https://www.cnblogs.com/jian-xiao/p/6009435.html?utm_source=itdadao&utm_medium=referral
    https://www.cnblogs.com/yuanmo396022993/p/9118308.html
    https://www.runoob.com/w3cnote/fastjson-intro.html
    http://kimmking.github.io/2017/06/06/json-best-practice/

    展开全文
  • jackjson.zip

    2021-07-10 16:33:52
    jackjson三个最新包下载,之前没有使用,现在想改,结果找的挺麻烦。
  • jackJson1.7.6

    2013-07-17 20:03:36
    快速json解析,媲美Gson,包没有多大,适合初学者使用这个包。
  • jackjson jar包

    2015-07-06 17:32:29
    jackson2.4 最高效的json转换,三个jar包,还有一个JSONUtil工具类,欢迎下载
  • Jackjson.rar

    2021-07-03 13:02:40
    JackJson的依赖jar包源码,文档
  • Jackjson使用

    千次阅读 2019-03-27 14:33:46
    一、Java对象 ⇒ JSON 1.1 转换方式 1.2 注解使用 1.3 普通对象转换 1.4 复杂Java对象转换 二、JSON ⇒ Java对象 2.1 JSON转换为Java对象 2.2 JSON转换为Java集合对象 ...创建Person.java类,实现setter、getter...
     
    

    创建Person.java类,实现setter、getter方法,此处不在赘述。

    一、Java对象 ⇒ JSON

    1.1 转换方式

    首先创建转换对象ObjectMapper

    ObjectMapper mapper = new ObjectMapper();
    

    该对象主要有两个转换方法
    第一种方式:将对象转为json字符串:

    String json = mapper.writeValueAsString(p1);
    

    输出结果

    {“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:1553666950369}

    第二种方式:

    mapper.writeValue(参数1,p1);
    

    关于参数1
    File:将obj对象转换为json字符串,并保存到指定的文件中
    Write:将obj对象转换为json字符串,并将json填充到字符输出流中
    OutputStream:将obj对象转换为json字符串,并将json填充到字节输出流中

    比如:
    将JSON字符串数据写入到test.txt文件中:

    mapper.writeValue(new File("/Users//Desktop/test.txt"), p1);
    

    1.2 注解使用

    @JsonIgnore:排除属性

    @JsonIgnore
    private Date birthday;
    

    转换最终的JSON字符串中,不会有birthday键值对。

    @JsonFormat:属性值格式化

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date birthday;
    

    转换结果:

    {“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:“2019-03-27 06:23:33”}

    1.3 普通对象转换

    见1.1

    1.4 复杂Java对象转换

    List集合转换为JSON字符串:

    ObjectMapper mapper = new ObjectMapper();
    String json = mapper.writeValueAsString(list);
    System.out.println(json);
    

    输出结果:

    [{“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:“2019-03-27 06:25:23”},{“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:“2019-03-27 06:25:23”},{“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:“2019-03-27 06:25:23”}]

    Map集合转换为JSON字符串

    public void test4() throws Exception {
        Person p1 = new Person();
        p1.setName("Alex");
        p1.setAge(21);
        p1.setGender("男");
        p1.setBirthday(new Date());
    
        // 创建JavaBean对象
        Map<String, Object> map = new HashMap<String, Object>();
    //        map.put("name", "Alex");
    //        map.put("age", "1111");
    //        map.put("gender", "xxx");
        map.put("k1", p1);
        map.put("k2", p1);
        map.put("k3", p1);
    
        // 转换
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(map);
        System.out.println(json);
    }
    

    输出结果:

    {“k1”:{“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:“2019-03-27 06:30:08”},“k2”:{“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:“2019-03-27 06:30:08”},“k3”:{“name”:“Alex”,“age”:21,“gender”:“男”,“birthday”:“2019-03-27 06:30:08”}}

    二、JSON ⇒ Java对象

    2.1 JSON转换为Java对象

    String json = "{\"name\":\"Alex\",\"age\":21,\"gender\":\"男\",\"birthday\":\"2019-03-27 06:01:54\"}";
    ObjectMapper mapper = new ObjectMapper();
    Person person = mapper.readValue(json, Person.class);
    System.out.println(person);
    

    2.2 JSON转换为Java集合对象

    String json = "[{\"name\":\"Alex\",\"age\":21,\"gender\":\"男\",\"birthday\":\"2019-03-27 06:01:54\"}," +
                    "       {\"name\":\"Alex\",\"age\":21,\"gender\":\"男\",\"birthday\":\"2019-03-27 06:01:54\"}," +
                    "       {\"name\":\"Alex\",\"age\":21,\"gender\":\"男\",\"birthday\":\"2019-03-27 06:01:54\"}]\n";
    
    ObjectMapper mapper = new ObjectMapper();
    List<Person> list = mapper.readValue(json, new TypeReference<List<Person>>() {});
    for (Person p : list) {
        System.out.println(p);
    }
    

    输出结果:

    Person{name=‘Alex’, age=21, gender=‘男’, birthday=Wed Mar 27 14:01:54 CST 2019}
    Person{name=‘Alex’, age=21, gender=‘男’, birthday=Wed Mar 27 14:01:54 CST 2019}
    Person{name=‘Alex’, age=21, gender=‘男’, birthday=Wed Mar 27 14:01:54 CST 2019}

    展开全文
  • 注意点以及jackjson

    2019-06-22 12:10:04
    路径要使用全路径使用 ${pageContext.request....这里没有提到一个问题:jackjson 在将对象转成 json 数据格式的时候,不能将 int 类型的转成字符串,这就导致生成的 json 数据中 int 类型数据不明确,无法访问。

    路径要使用全路径使用 ${pageContext.request.contextPath}可以获取到当前的请求的路径,然后在此基础上获取想要的文件的路径。
    从服务器端返回的 JSON 数据的,键,必须使用 双引号。
    判断 session 对象中是否有 people 这个 attribute :
    $(sessionScope.people == null) 返回的是一个 boolean 值

    文本框输入和下拉菜单的选择 都是 change 事件。

    使用 jackson 自动的写 JSON 对象:
    使用到的 jar 包:jackson-annotations-2.2.2.jar、jackson-core-2.2.2.jar、jackson-databind-2.2.2.jar
    1.创建 ObjectMapper 对象
    2.使用 ObjectMapper 对象的 writeValueAsString() 把 Java 对象或集合转成 JSON 对象。
    3.注意:
    jackson 是根据 getter 方法来定位 JSON 对象的属性,而不是字段
    可以在类的 getter 方法上添加注解 : @JsonIgnore (com.fasterxml.jackson.annotation.JsonIgnore),在转为 JSON 对象的时候忽略该属性。

    import com.fasterxml.jackson.annotation.JsonIgnore;
    import com.fasterxml.jackson.core.JsonProcessingException;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    public class Customer {
        private String name;
        private String id;
    
        public Customer(String name, String id) {
            this.name = name;
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getCity(){
            return "Beijing";
        }
    
        @JsonIgnore
        public String getBirth(){
            return "19901212";
        }
    
        public static void main(String[] args) throws JsonProcessingException {
            //1.导入 jar 包
            //2.创建 ObjectMapper 对象
            ObjectMapper mapper = new ObjectMapper();
            //3.调用 mapper.writeValueAsString(object) 方法,把一个对象转为一个 JSON 字符串
            Customer customer = new Customer("qiqihaer", "1001");
            String jsonStr = mapper.writeValueAsString(customer);
            System.out.println(jsonStr);
            // jackson 使用 getter 方法来定位 JSON 对象的属性
            // 可以通过添加 注解 @JsonIgnore 来忽略某一个 getter 定义的属性
            //{"name":"qiqihaer","id":"1001","city":"Beijing"}
            List<Customer> customers = Arrays.asList(customer, new Customer("beijing", "1200"));
            System.out.println(mapper.writeValueAsString(customers));
            //[{"name":"qiqihaer","id":"1001","city":"Beijing"},{"name":"beijing","id":"1200","city":"Beijing"}]
        }
    }
    

    使用 jackjson 将 Map 类型的数据转成 Json 数据流
    Map<String, String> map = new HashMap<String, String>();
    map.put(“id”, “zc”);
    map.put(“name”, “早餐”);
    ObjectMapper mapper = new ObjectMapper();
    String json = mapper.writeValueAsString(map);
    System.out.println(json);
    //{“name”:“早餐”,“id”:“zc”}
    这里没有提到一个问题:jackjson 在将对象转成 json 数据格式的时候,不能将 int 类型的转成字符串,这就导致生成的 json 数据中 int 类型数据不明确,无法访问。

    展开全文
  • JackJSON的用法

    千次阅读 2020-07-27 09:11:56
    网上大多数都是FastJSON的用法,很少有JackJSON的用法。我总结了几个自己经常用到的,供大家参考。 1.Java对象转化成JSON String getJSON(Object obj){ ObjectMapper objectMapper = new ObjectMapper(); //创建...
  • try { om.writeValue(new File("D:\\json.txt"),user); } catch (IOException e) { e.printStackTrace(); }
  • jackjson教程

    2019-01-23 14:22:04
    Jackson提供了三种可选的JSON处理方法 1、流式API   com.fasterxml.jackson.core.JsonParser读  com.fasterxml.jackson.core.JsonGenerator写 2、树模型:提供一个 JSON 文档可变内存树的表示形式  ...
  • package cn.edu.hbcf.common.jackjson; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Set; import org.codehaus.jackson.JsonGenerationException; import org.codehaus.ja....
  • 先说不同点 1. 当对象中有属性为null的时候,fastjson默认是除...2.相反的jackjson则不会丢失属性,jackjson会保留为null的那条属性 (见50行) 3.同样是取某个值.fastjson取出来的值不带" " 双引号 ,jackjson带" " 双...
  • jackJson java解析json json解析 json jack java快速解析json,这个是一个完整的包,包含jackjson以及依赖包: 话说依赖包难找。 json-lib * jakarta commons-lang 2.4 * jakarta commons-beanutils 1.7.0 * ...
  • 如果要构造以下格式的json数据 { "total":10, "rows":[ {"uid":1,"depId":1,"employeeId":2,"userName":"马云","userPwd":"123456","createDate":"1999-07-01 16:15:29","status":true}, {"uid":2,"depId":1,...
  • Jackjson与FastJson区别

    2020-04-18 16:17:44
    项目中,我们经常看到jackjson与fastjson共同使用。原因主要下: 1,json-lib是原有的json解析工具包,以来很多第三方jar。并且对于复杂类型转换json转化成bean有缺陷。list,map集合转化会出现问题。 2.Gjson是...
  • 现在多数的应用为了提高交互性多使用异步刷新,即在不刷新整个页面的情况下,只刷新局部,局部刷新用得最多就是ajax,ajax和后台进行交互的数据格式使用的最多的是JSON,这里简单描述,在springmvc的开发架构下如何...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,103
精华内容 1,241
关键字:

jackjson