Java 从json提取数组并转换为list的操作方法

 更新时间:2022年10月27日 10:15:32   作者:滕青山YYDS  
这篇文章主要介绍了Java 从json提取出数组并转换为list,使用getJSONArray()获取到jsonarray后,再将jsonArray转换为字符串,最后将字符串解析为List列表,本文通过实例代码给大家详细讲解,需要的朋友可以参考下

Java 从json提取数组并转换为list

这里ret表示json字符串原文

// 解析为JSONObject 
JSONObject jsonObject = JSONObject.parseObject(ret);
// 提取出JSONArray 
JSONArray jsonArray = new JSONArray(jsonObject.getJSONObject("result").getJSONArray("org_list"));
// 将JSONArray转为List列表
String str = JSONObject.toJSONString(jsonArray);
List<Org> list = JSONObject.parseArray(str, Org.class);

使用getJSONArray()获取到jsonarray后,再将jsonArray转换为字符串,最后将字符串解析为List列表。

代码中的Org是我List列表中元素的类型。

Java单个对象和List对象转换成Json,Json转List

(一)使用单个对象转换JSON对象

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
 
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;
 
import com.css.eshop.exception.DataAccessException;
import com.css.eshop.model.VoucherInfo;
import com.css.eshop.util.HttpClientUtil;
import com.css.eshop.util.LoadStaticReferenceTables;
 
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
 
public class TestPut {
	protected Log logger = LogFactory.getLog(this.getClass().getName());
	
	@Test
	public void getOneJson(){//测试转换成Json,单个对象
		VoucherInfo vo1=new VoucherInfo();
		vo1.setVoucherValue(2131);vo1.setVoucherCode("小可爱的");
		JSONObject updateJsonObj = JSONObject.fromObject(vo1);//转换成json格式
		logger.info("---转换成json格式:---"+updateJsonObj.toString());//提取access_token节点数据
	}
}

输出转换后日志:

17-10-2018 17:35 INFO  TestPut:35 - ---转换成json格式:---{"labourCost":0,"refMetalPrice":0,"voucherCoNumber":"","voucherCode":"小可爱的","voucherType":"","voucherValue":2131,"weight":0,"weightUnit":""}

(二)多个对象存到List,再转换成JSON

	@Test
	public void getArrayList(){//测试转换成Json,List转换成JSONList
		List<VoucherInfo> vouchersList=new ArrayList<VoucherInfo>();
		VoucherInfo vo1=new VoucherInfo();
		VoucherInfo vo2=new VoucherInfo();
		vo1.setVoucherValue(2131);vo1.setVoucherCode("小可爱的");
		vo2.setVoucherValue(100);vo2.setVoucherCode("小可爱的222");
		vouchersList.add(vo1);vouchersList.add(vo2);
		JSONArray jsonArray = JSONArray.fromObject(vouchersList);
		logger.info("--获取到转换为json格式的内容:"+jsonArray.toString());//提取access_token节点数据
		
	}

输出日志:

17-10-2018 17:36 INFO  TestPut:47 - --获取到转换为json格式的内容:[{"labourCost":0,"refMetalPrice":0,"voucherCoNumber":"","voucherCode":"小可爱的","voucherType":"","voucherValue":2131,"weight":0,"weightUnit":""},{"labourCost":0,"refMetalPrice":0,"voucherCoNumber":"","voucherCode":"小可爱的222","voucherType":"","voucherValue":100,"weight":0,"weightUnit":""}]

(三)json的list对象转List对象

先转jsonArray,再转object提取数据

	@Test
	public void test1210() {
		List<VoucherInfo> vouchers=new ArrayList<VoucherInfo>();
		VoucherInfo voucherInfo1=new VoucherInfo();VoucherInfo voucherInfo2=new VoucherInfo();
		voucherInfo1.setVoucherCode("coupncdeC0000003");voucherInfo1.setVoucherType("DISC_VOUCHER");
		voucherInfo1.setVoucherCoNumber(null);voucherInfo1.setLabourCost(0.0);voucherInfo1.setWeight(0.0);
		voucherInfo1.setVoucherValue(1000.0);voucherInfo1.setRefMetalPrice(0.0);
		
		voucherInfo2.setVoucherCode("coupncdeC0000001");voucherInfo2.setVoucherType("DISC_VOUCHER");
		voucherInfo2.setVoucherCoNumber(null);voucherInfo2.setLabourCost(0.0);voucherInfo2.setWeight(0.0);
		voucherInfo2.setVoucherValue(1000.0);voucherInfo2.setRefMetalPrice(0.0);
		vouchers.add(voucherInfo1);vouchers.add(voucherInfo2);
		double ecoupon_amt=0;
		if(null != vouchers  && vouchers.size()>0){
			JSONArray vouchersListJsonArray = JSONArray.fromObject(vouchers);
			String vouchersListJson=vouchersListJsonArray.toString();
			
			System.out.println(vouchersListJson);
			if(null != vouchersListJson){
				JSONArray jsonArray1 = JSONArray.fromObject(vouchersListJson);
				//循环获取json数组中的 json 对象,然后转换为 object
		        for (int j = 0; j < jsonArray1.size(); j++) {  
		            JSONObject jsonObject2 = jsonArray1.getJSONObject(j);  
		            VoucherInfo cust = (VoucherInfo) JSONObject.toBean(jsonObject2, VoucherInfo.class);  
		            ecoupon_amt=ecoupon_amt+cust.getVoucherValue();
		        }  
			}
		}
		System.out.println(ecoupon_amt);
	}

到此这篇关于Java 从json提取出数组并转换为list的文章就介绍到这了,更多相关java json提取数组转换为list内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mybatis返回类型map时如何将key大写转为小写

    mybatis返回类型map时如何将key大写转为小写

    这篇文章主要介绍了mybatis返回类型map时实现将key大写转为小写操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • Netty分布式ByteBuf的分类方式源码解析

    Netty分布式ByteBuf的分类方式源码解析

    这篇文章主要为大家介绍了Netty分布式ByteBuf的分类方式源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • 深入浅出重构Mybatis与Spring集成的SqlSessionFactoryBean(上)

    深入浅出重构Mybatis与Spring集成的SqlSessionFactoryBean(上)

    通常来讲,重构是指不改变功能的情况下优化代码,但本文所说的重构也包括了添加功能。这篇文章主要介绍了重构Mybatis与Spring集成的SqlSessionFactoryBean(上)的相关资料,需要的朋友可以参考下
    2016-11-11
  • 详解Spring Boot配置排序依赖技巧

    详解Spring Boot配置排序依赖技巧

    本篇文章主要介绍了Spring Boot配置排序依赖技巧,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • Java利用Jackson轻松处理JSON序列化与反序列化

    Java利用Jackson轻松处理JSON序列化与反序列化

    Jackson 是 Java 中最流行的 JSON 处理库之一,它提供了许多注解来简化 JSON 的序列化和反序列化过程。这篇文章将介绍一些 Jackson 常用的注解,以帮助您更轻松地处理 JSON 数据
    2023-05-05
  • elasticsearch索引index之put mapping的设置分析

    elasticsearch索引index之put mapping的设置分析

    这篇文章主要为大家介绍了elasticsearch索引index之put mapping的设置分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • springboot 监控管理模块搭建的方法

    springboot 监控管理模块搭建的方法

    本篇文章主要介绍了springboot 监控管理模块搭建的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • idea没有services窗口、没有springboot启动项问题

    idea没有services窗口、没有springboot启动项问题

    这篇文章主要介绍了idea没有services窗口、没有springboot启动项问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Spring sentinel哨兵模式相关原理解析

    Spring sentinel哨兵模式相关原理解析

    这篇文章主要介绍了Spring sentinel哨兵模式相关原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • 深入浅析JDK8新特性之Lambda表达式

    深入浅析JDK8新特性之Lambda表达式

    Lambda表达式主要是替换了原有匿名内部类的写法,也就是简化了匿名内部类的写法。这篇文章主要介绍了JDK8新特性之Lambda表达式,非常不错感兴趣的朋友参考下吧
    2016-10-10

最新评论