json、bean、map互相转换

主角:阿里巴巴的fastJson

Bean转Map工具类

1. 引入依赖(maven工程)

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.43</version>
</dependency>

2. json字符串转map

这是博主经常用的两种方式,比较实用
方式一:

   @Test
    public void test(){
        String str="{\"name\":\"柳岩\",\"age\":\"18\",\"sex\":\"女\",\"address\":\"地球\"}";
        Map map=(Map)JSON.parse(str);
        System.out.println(map);
        System.out.println(map.get("name"));
    }

输出:

{“address”:“地球”,“sex”:“女”,“name”:“柳岩”,“age”:“18”}
柳岩

方式二:

    @Test
public void test(){
    String str="{\"name\":\"柳岩\",\"age\":\"18\",\"sex\":\"女\",\"address\":\"地球\"}";
    Map map =JSON.parseObject(str,Map.class);
    System.out.println(map);
    System.out.println(map.get("name"));
}

输出:

{“address”:“地球”,“sex”:“女”,“name”:“柳岩”,“age”:“18”}
柳岩

3. json字符串转换为jsonObject

在将JSON转换成JSONObject类之后,便可从这个对象中获取每个字段的数据了

  @Test
    public void testJson(){
        String str="{\"name\":\"柳岩\",\"age\":\"18\",\"sex\":\"女\",\"address\":\"地球\"}";
        JSONObject jsonObject = JSON.parseObject(str);
        System.out.println(jsonObject);
        System.out.println(jsonObject.getString("name"));
    }

输出:

{“address”:“地球”,“sex”:“女”,“name”:“柳岩”,“age”:“18”}
柳岩

4. Map转换String

这个也比较实用,简单粗暴

  @Test
    public void testMapToString(){
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("name","孙悟空");
        map.put("age","19");
        String str = JSON.toJSONString(map);
        System.out.println(str);
    }

输出:

{“name”:“孙悟空”,“age”:“19”}

5. Map转换Json

   @Test
    public void testMapToJson(){
        HashMap<String, Object> map = new HashMap<String, Object>();
        map.put("name","柳岩");
        map.put("age","19");
        JSONObject jsonObject = new JSONObject(map);
        System.out.println(jsonObject.getString("name")+"---"+jsonObject.getString("age"));
    }

输出:

柳岩—19

6. bean转json

     实体类Person:


 public class Person {
    private String name;
    private String age;
    private String sex;
    private String address;

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age='" + age + '\'' +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }

    public Person(){

    }
    public Person(String name, String age, String sex, String address) {
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.address = address;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

测试:JSON.toJSONString()

@Test
    public void testBean(){
        Person person = new Person("刘德华","29","男","地球");
        System.out.println(person.toString());
        String str = JSON.toJSONString(person);
        System.out.println(str);
    }

输出:

Person{name=‘刘德华’, age=‘29’, sex=‘男’, address=‘地球’}
{“address”:“地球”,“age”:“29”,“name”:“刘德华”,“sex”:“男”}

7. Json转Bean

json字符串与javaBean之间的转换推荐使用 TypeReference 这个类,使用泛型可以更加清晰,当然也有其它的转换方式,这里就不做探讨了。

@Test
    public void testJsonToBean(){
     String str="{\"name\":\"柳岩\",\"age\":\"18\",\"sex\":\"女\",\"address\":\"地球\"}";
     Person person = JSON.parseObject(str, new TypeReference<Person>() {});
     //Person person = JSONObject.parseObject(str, new TypeReference<Person>() {});//因为JSONObject继承了JSON,所以这样也是可以的

     System.out.println(person.toString());

 }

输出:

Person{name=‘柳岩’, age=‘18’, sex=‘女’, address=‘地球’}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值