JSON 字符串 与 java 对象的转换

本文介绍如何在Java中实现JavaBean与JSON之间的转换,包括列表转换、单个对象转换及复杂对象处理等,提供了实用代码示例。

 1. //把Map<String,Object> 对象列表转换为javaBean对象

  BeanUtils.populate(exhibitions, map);

 

// 引入相应的包

//json-lib-2.2-jdk15.jar

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

1. //把java 对象列表转换为json对象数组,并转为字符串

    JSONArray array = JSONArray.fromObject(userlist);
    String jsonstr = array.toString();

2.//把java对象转换成json对象,并转化为字符串

  JSONObject object = JSONObject.fromObject(invite);
  Log4jInit.ysulogger.debug(object.toString());

3.//把JSON字符串转换为JAVA 对象数组

  String personstr = getRequest().getParameter("persons");
  JSONArray json = JSONArray.fromObject(personstr);
  List<InvoidPerson> persons = (List<InvoidPerson>)JSONArray.toCollection(json, nvoidPerson.class);
4.//把JSON字符串转换为JAVA 对象

 

str = "{\"lendperson\":\"李四\",\"lendcompany\":\"有限公司\",\"checkperson\":\"李四\",
  \"lenddate\":\"2010-07-19T00:00:00\",\"lendcounts\":4,\"
  passports\":[{\"passportid\":\"d\",\"name\":\"李豫川\",\"passporttype\":\"K\"},
  {\"passportid\":\"K9051\",\"name\":\"李平\",\"passporttype\":\"K\"},
  {\"passportid\":\"K90517\",\"name\":\"袁寒梅\",\"passporttype\":\"K\"},
  {\"passportid\":\"K905199\",\"name\":\"贺明\",\"passporttype\":\"K\"}]}";
   JSONObject jsonobject = JSONObject.fromObject(str);
  PassportLendsEntity passportlends = null;
  try {
   //获取一个json数组
   JSONArray array = jsonobject.getJSONArray("passports");
   //将json数组 转换成 List<PassPortForLendsEntity>泛型
   List<PassPortForLendsEntity> list = new ArrayList<PassPortForLendsEntity>();
   for (int i = 0; i < array.size(); i++) {   
            JSONObject object = (JSONObject)array.get(i);  
            PassPortForLendsEntity passport = (PassPortForLendsEntity)JSONObject.toBean(object,
              PassPortForLendsEntity.class);
            if(passport != null){
             list.add(passport);
            }  
         }
   //转换PassportLendsEntity 实体类
   passportlends = (PassportLendsEntity)JSONObject.toBean(jsonobject, PassportLendsEntity.class);

 

要将 JSON 字符串转换Java 对象,可以使用阿里巴巴的 FastJSON 库来实现。FastJSON 提供了简单易用的 API 来处理 JSON 数据,使其 Java 对象之间的转换变得非常方便。以下是详细的实现步骤: ### 准备工作 首先,确保项目中已经引入了 FastJSON 库。如果使用 Maven 项目,可以在 `pom.xml` 文件中添加以下依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version> </dependency> ``` ### 示例代码 假设有一个 `Person` 类,包含 `name`、`age` 和 `address` 属性,可以通过以下代码将 JSON 字符串转换为 `Person` 对象: ```java package com.company; import com.alibaba.fastjson.JSON; public class Main { public static void main(String[] args) { // JSON格式的字符串 String str = "{\"name\":\"张三\",\"age\":28,\"address\":\"浙江省嘉兴市\"}"; // 将JSON字符串转换Java对象 Person p = JSON.parseObject(str, Person.class); // 输出Java对象的属性 System.out.println(p.getName()); // 输出:张三 System.out.println(p.getAge()); // 输出:28 System.out.println(p.getAddress()); // 输出:浙江省嘉兴市 } } ``` ### Java 对象定义 确保 `Person` 类的字段 JSON 字符串中的键匹配,并且提供 getter 和 setter 方法: ```java public class Person { private String name; private int age; private String address; public Person() {} public Person(String name, int age, String address) { this.name = name; this.age = age; this.address = address; } // Getter和Setter方法 public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } } ``` ### 解析 JSON 数组 如果需要将 JSON 数组转换Java 对象的集合,可以使用 `JSON.parseArray` 方法。例如,将 JSON 字符串转换为 `List<Person>`: ```java String jsonArrayStr = "[{\"name\":\"张三\",\"age\":28,\"address\":\"浙江省嘉兴市\"},{\"name\":\"李四\",\"age\":30,\"address\":\"北京市\"}]"; List<Person> personList = JSON.parseArray(jsonArrayStr, Person.class); ``` ### 注意事项 - 确保 JSON 字符串的格式正确,键名 Java 类的字段名一致。 - 使用 `JSON.parseObject` 转换单个对象,使用 `JSON.parseArray` 转换数组或集合。 - 如果 JSON 字符串中包含特殊字符或嵌套结构,确保使用正确的转义字符或嵌套类来处理[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值