JSON.parseObject 和 JSON.toJSONString 实例

JSON.parseObject,是将Json字符串转化为相应的对象;JSON.toJSONString则是将对象转化为Json字符串。在前后台的传输过程中,Json字符串是相当常用的,这里就不多介绍其功能了,直接举一下应用的小例子,帮助理解这两个方法的用法。

首先用maven引入fastjson

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wujiang.test</groupId>
    <artifactId>test</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <fastjson_version>1.2.28</fastjson_version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson_version}</version>
        </dependency>
    </dependencies>
</project>

定义一个model类,员工,有四个属性,如下所示:

package jsonTest;

import java.util.Date;

/**
 * @author wujiang
 * @version 1.0.0.
 * @date 2017/4/30
 */
public class Staff {
    private String name;
    private Integer age;
    private String sex;
    private Date birthday;
    
    //省略getter和setter方法
    @Override
    public String toString() {
        return "Staff{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", birthday=" + birthday +
                '}';
    }
}

好的,下一步,测试一下JSON.parseObject 和 JSON.toJSONString方法。这里故意在Json字符串中多了一个telephone,少了一个Staff中的birthday,看看输出的对象会有什么变化

package jsonTest;

import com.alibaba.fastjson.JSON;

/**
 * @author wujiang
 * @version 1.0.0.
 * @date 2017/4/30
 */
public class jsonTest {
    public static void main(String[] args) {
        /**
         * json字符串转化为对象
         */
        String jsonString = "{name:'Antony',age:'12',sex:'male',telephone:'88888'}";
        Staff staff = JSON.parseObject(jsonString, Staff.class);
        System.out.println(staff.toString());

        /**
         * 对象转化为json字符串
         */
        String jsonStr = JSON.toJSONString(staff);
        System.out.println(jsonStr);
    }
}

输出结果

Staff{name='Antony', age=12, sex='male', birthday=null}

{"age":12,"name":"Antony","sex":"male"}
//如果age是String类型,那么输出结果变为
//{"age":"12","name":"Antony","sex":"male"}

在JSON.parseObject 的时候,会去填充名称相同的属性。对于Json字符串中没有,而model类有的属性,会为null;对于model类没有,而Json字符串有的属性,不做任何处理。

至于 JSON.toJSONString 就不需要多说了,看一下就知道

至于应用场景,比方说,用户登录微信公众号的时候,调用微信官方的restful接口,得到该用户的所有信息的一个Json字符串,然后写一个类(将自己需要的信息封装成一个类)。例如下面的伪代码

String s = httpRequest.sendGet("https://api.weixin.qq.com/sns/oauth2/access_token","appid=" + appId + "&secret=" + appSecret + "&code=" + code + "&grant_type=authorization_code");

UserAuthorizationReturn userAuthorizationReturn = JSON.parseObject(s, UserAuthorizationReturn.class);

另外注意,如果需要对List进行json的转化,转成json字符串的方式没有区别,但是从json字符串转化回List时,需要使用JSON.parseArray方法

String jsonStr = JSON.toJSONString(tableInfoVO.getFieldInfo())
List<FiledInfoVO> filedInfoVOList = JSON.parseArray(jsonStr,FiledInfoVO.class)

说明:
如有转载,请在文章开头注明出处
http://blog.csdn.net/antony9118/article/details/71023009

  • 75
    点赞
  • 202
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
### 回答1: toJSONString和toJSON的区别在于: toJSONString是将一个Java对象转换为JSON格式的字符串,而toJSON是将一个Java对象转换为JSON格式的JSONObject对象。 toJSONString方法返回的是一个字符串,可以直接用于网络传输或存储到文件中,而toJSON方法返回的是一个JSONObject对象,需要再进行一些操作才能得到字符串。 另外,toJSONString方法是在JSON类中定义的,而toJSON方法是在JSONAware接口中定义的,因此需要实现JSONAware接口才能使用toJSON方法。 ### 回答2: tojsonstring和tojson是两个不同的方法,用于将对象转换为JSON格式的字符串。它们的区别如下: 1. tojsonstring是一种静态方法,它将传入的对象转换为JSON格式的字符串并返回,而tojson是一种实例方法,它将当前对象转换为JSON格式的字符串并返回。 2. tojsonstring方法可以接受任何类型的对象作为参数,而tojson方法只能用于将实现了JSONAware接口的对象转换为JSON格式的字符串。 3. tojsonstring方法返回一个字符串,该字符串包含了对象的所有属性和值,而tojson方法返回一个JSONObject对象,该对象可以使用键值对的形式来访问对象的属性和值。 4. tojsonstring方法可以使用JSONObject.toJSONString(object)的方式进行调用,而tojson方法可以使用JSONObject.toJSON(object)的方式进行调用。 综上所述,tojsonstring适用于将任意类型的对象转换为JSON格式的字符串,而tojson适用于将实现了JSONAware接口的对象转换为JSON格式的字符串,并且返回的结果有所差异,一个是字符串,一个是JSONObject对象。 ### 回答3: tojsonstring和tojson都是将对象转换为JSON字符串的方法,但是有一些区别。 tojsonstringJSON对象提供的一个静态方法,它接收一个Java对象作为参数,并返回对应的JSON字符串。它的作用是将Java对象序列化为JSON字符串。例如,如果我们有一个Java对象person,我们可以使用tojsonstring方法将其转换为JSON字符串,然后可以通过网络传输或存储到文件中。 tojson是在Gson库中提供的方法,它是Gson对象的实例方法,用于将对象转换为JSON字符串。Gson是一个Java中用于操作JSON的库,它提供了丰富的API。Gson可以处理复杂的对象,包括嵌套对象、集合、数组等。使用tojson方法,我们可以自定义序列化规则,通过注册自定义的TypeAdapter,来指定如何将对象转换为JSON字符串。这使得tojson方法在处理复杂对象时更加灵活和强大。 总的来说,tojsonstringJSON对象提供的方法,简单易用,适用于将简单的Java对象转换为JSON字符串。而tojson是Gson库提供的方法,更加灵活和强大,适用于处理复杂的对象。根据具体的需求选择合适的方法进行对象到JSON字符串的转换。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值