`

Java 对象转换为 JSON 格式

    博客分类:
  • Java
 
阅读更多

FastJSON将Java对象转为json,日期显示时间戳未格式化解决办法

 

JSON版本:FastJson

Java 对象转换为 JSON 格式#

定义以下 Person JavaBean:

Copy
public class Person {
     
    @JSONField(name = "AGE")
    private int age;
 
    @JSONField(name = "FULL NAME")
    private String fullName;
 
    @JSONField(name = "DATE OF BIRTH")
    private Date dateOfBirth;
 
    public Person(int age, String fullName, Date dateOfBirth) {
        super();
        this.age = age;
        this.fullName= fullName;
        this.dateOfBirth = dateOfBirth;
    }
 
    // 标准 getters & setters
}

可以使用 JSON.toJSONString() 将 Java 对象转换换为 JSON 对象:

Copy
private List<Person> listOfPersons = new ArrayList<Person>();
 
@Before
public void setUp() {
    listOfPersons.add(new Person(15, "John Doe", new Date()));
    listOfPersons.add(new Person(20, "Janette Doe", new Date()));
}
 
@Test
public void whenJavaList_thanConvertToJsonCorrect() {
    String jsonOutput= JSON.toJSONString(listOfPersons);
}

输出结果为:

Copy
[  
    {  
        "AGE":15,
        "DATE OF BIRTH":1468962431394,
        "FULL NAME":"John Doe"
    },
    {  
        "AGE":20,
        "DATE OF BIRTH":1468962431394,
        "FULL NAME":"Janette Doe"
    }
]

我们还可以自定义输出,并控制字段的排序,日期显示格式,序列化标记等。

接下来我们更新 bean 并添加几个字段:

Copy
@JSONField(name="AGE", serialize=false)
private int age;
 
@JSONField(name="LAST NAME", ordinal = 2)
private String lastName;
 
@JSONField(name="FIRST NAME", ordinal = 1)
private String firstName;
 
@JSONField(name="DATE OF BIRTH", format="dd/MM/yyyy", ordinal = 3)
private Date dateOfBirth;

以上代码中我们列出了基本参数类别,并使用 @JSONField 注解,以便实现自定义转换:

  • *format* 参数用于格式化 date 属性。
  • 默认情况下, FastJson 库可以序列化 Java bean 实体, 但我们可以使用 *serialize* 指定字段不序列化。
  • 使用 *ordinal* 参数指定字段的顺序

这样,以上输出结果为:

Copy
[
    {
        "FIRST NAME":"Doe",
        "LAST NAME":"Jhon",
        "DATE OF BIRTH":"19/07/2016"
    },
    {
        "FIRST NAME":"Doe",
        "LAST NAME":"Janette",
        "DATE OF BIRTH":"19/07/2016"
    }
]

@JSONField#

@JSONField 的作用对象:#

  • Field
  • Setter 和 Getter 方法

注意:FastJson 在进行操作时,是根据 getter 和 setter 的方法进行的,并不是依据 Field 进行。

注意:若属性是私有的,必须有 set 方法。否则无法反序列化。

Copy
package com.alibaba.fastjson.annotation;

public @interface JSONField {
    // 配置序列化和反序列化的顺序,1.1.42版本之后才支持
    int ordinal() default 0;

     // 指定字段的名称
    String name() default "";

    // 指定字段的格式,对日期格式有用
    String format() default "";

    // 是否序列化
    boolean serialize() default true;

    // 是否反序列化
    boolean deserialize() default true;
}

2. JSONField 配置方式#

FieldInfo 可以配置在 getter/setter 方法或者字段上。例如:

2.1 配置在 getter/setter 上#

Copy
public class A {
      private int id;
 
      @JSONField(name="ID")
      public int getId() {return id;}
      @JSONField(name="ID")
      public void setId(int value) {this.id = id;}
}

2.2 配置在 field 上#

Copy
public class A {
      @JSONField(name="ID")
      private int id;
 
      public int getId() {return id;}
      public void setId(int value) {this.id = id;}
 }

3. 使用format配置日期格式化#

Copy
public class A {
      // 配置date序列化和反序列使用yyyyMMdd日期格式
      @JSONField(format="yyyyMMdd")
      public Date date;
 }

4. 使用 serialize/deserialize 指定字段不序列化#

Copy
public class A {
      @JSONField(serialize=false)
      public Date date;
 }

 public class A {
      @JSONField(deserialize=false)
      public Date date;
 }

5. 使用 ordinal 指定字段的顺序#

默认 fastjson 序列化一个 java bean,是根据 fieldName 的字母序进行序列化的,你可以通过 ordinal 指定字段的顺序。这个特性需要 1.1.42 以上版本。

Copy
public static class VO {
    @JSONField(ordinal = 3)
    private int f0;

    @JSONField(ordinal = 2)
    private int f1;

    @JSONField(ordinal = 1)
    private int f2;
}
分享到:
评论

相关推荐

    使用json-lib将java对象转换成json字符串

    标题中的“使用json-lib将java对象转换成json字符串”指的是在Java编程中,利用json-lib这个库来将Java对象转化为JSON格式的字符串。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,广泛用于前后端...

    json格式与java类对象相互转换

    1. 将Java对象转换为JSON字符串,同样使用`ObjectMapper`: ```java User john = new User(1, "John", "john@example.com"); String johnJson = mapper.writeValueAsString(john); ``` 2. 对于集合类型,如List或...

    java对象转换为json字符串或字符串数组

    在Java开发中,将Java对象转换为JSON字符串或字符串数组是一项常见的任务,特别是在与前端交互、数据存储或者网络传输时。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也...

    JAVA-JSON工具转换类

    可能包含的方法有`toJson()`(将Java对象转换为JSON字符串)、`fromJson()`(将JSON字符串解析为Java对象)、`convertToMap()`(将JSON字符串转换为Map)以及`convertToList()`(将JSON字符串转换为List)等。...

    java json格式化的两种方式(csdn)————程序.pdf

    除了将Java对象转换为JSON格式的字符串外,我们也可以将JSON格式的字符串转换为Java对象。下面是一个使用Gson库将JSON格式的字符串转换为Java对象的示例代码: ```java public static void main(String[] args) { ...

    java对象集合转json格式

    除了库,还有一些在线工具可以辅助开发者快速转换JSON和Java对象,例如JSON Formatter或JsonSchema2Pojo,它们在开发过程中能提供便利。 总的来说,Java对象集合转JSON格式是通过JSON库实现的,而Jackson是其中最...

    JAVA对象转化为JSON

    6. **`ezmorph-1.0.6.jar`**:EZMorph库主要用于Java对象的动态转换,虽然不是直接用于JSON转换,但在需要将Java对象转换成适合JSON格式的类型时,可能会用到。 在实际应用中,如果你对JSON的结构有严格的要求,如...

    java-对象数组转换为json

    首先,我们来看如何将一个Java对象数组转换成JSON格式。这通常涉及到使用第三方库如`fastjson`、`Jackson`或`org.json`等。这里以`org.json`为例进行说明: ```java import org.json.JSONArray; PricingRangeDTO[]...

    java对象转JSON

    1.一款将java对象转成json或是将json转成java对象的jar文件; 2.在网上找了半天才找到,希望大家共享; 3.使用方法,大家在网上随便找,很多,很简单,一看便会; 4.此包在eclipse中和AndroidStudio中都可以用,但是,你如果...

    Json与java对象之间相互转换源码

    Gson是Google提供的一个Java库,可以将Java对象转换为JSON字符串,反之亦然。首先,需要在项目中引入Gson库,然后可以使用以下方法进行转换: 将Java对象转换为JSON字符串: ```java Gson gson = new Gson(); ...

    一个Java序列化反序列化库,用于将Java对象转换为JSON和返回JSON.zip

    本库专注于将Java对象转换为JSON格式,这在Web服务、API开发、数据存储和传输等方面都有广泛的应用。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也方便机器解析和生成。...

    JSON转换为JAVA对象及日期格式转换处理 -

    JSON转换为JAVA对象及日期格式转换处理 -

    jackson-java对象解析为json

    通过`writeValueAsString()`方法,我们可以轻松地将任何Java对象转换为JSON格式的字符串。 ```java ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(yourJavaObject);...

    Java数据格式转换成json

    在 Java 中,有多种库可以用来将 Java 对象转换为 JSON 格式,如 Jackson、Gson 和 org.json 等。 **1. 使用 Jackson** Jackson 是一个流行的 Java 库,用于序列化 Java 对象为 JSON,以及反序列化 JSON 为 Java ...

    Java 实现Redis存储复杂json格式数据并返回给前端

    2. **JSON字符串存储**:最简单的方式是将Java对象转换为JSON字符串,然后存储为Redis中的String类型。Fastjson库在这里被用到,其`toJSONString`方法可以将Java对象转化为JSON格式的字符串。获取时,直接返回JSON...

    java FASTJSON 解析复杂JSON实例源码

    - `JSON.toJSONString(Object obj)`:将Java对象转换为JSON格式的字符串。 - `JSONArray.toJSONString()` 和 `JSONObject.toJSONString()`:分别用于将JSONArray和JSONObject转换为JSON字符串。 在处理复杂的JSON...

    json-java对象转换包

    在Java中,为了方便地将Java对象转换为JSON格式以及将JSON字符串解析为Java对象,通常会使用特定的库,如"json-java对象转换包"所提及的json-lib。json-lib是一个Java库,它提供了将Java对象转换为JSON格式,以及将...

    Java图形实现json格式化

    例如,你可以使用`readValue()`方法解析JSON字符串,`writeValueAsString()`方法将Java对象转换为JSON格式。在JSON格式化工具中,我们可以先将输入的JSON字符串解析为一个`JsonNode`对象,然后通过递归遍历整个JSON...

    使用json-lib实现json与Java对象的互转

    `json-lib` 是一个 Java 库,它提供了将 JSON 格式的数据转换为 Java 对象,以及将 Java 对象转换为 JSON 格式数据的功能。在 Java 开发中,`json-lib` 是一个常用的 JSON 处理工具,尤其适用于需要处理复杂 JSON ...

    java json工具包

    这个包可能包含了多个组件,用于帮助Java开发者方便地将Java对象转换为JSON格式,或者将接收到的JSON数据解析为Java对象。 描述中提到了"json jsonjsp工具 jspjsonjar包",这暗示了这个工具包可能特别关注于与JSP...

Global site tag (gtag.js) - Google Analytics