JSON数组转Java List

JSON数组转Java List本文使用alibaba开源项目fastjson与SourceForge开源项目JSON-lib两种方法转换json。现有json文件user.json如下:[{“userid”:”309BCCE3-8525-4D33-9856-5084E24FD96F”,”username”:”林梦”,”password”:”19bdec7440acd44c669

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

本文使用alibaba开源项目fastjson与SourceForge开源项目JSON-lib两种方法转换json。

现有json文件user.json如下:

[
  {
    "userid": "309BCCE3-8525-4D33-9856-5084E24FD96F",
    "username": "林梦",
    "password": "19bdec7440acd44c669240ed534fc2f6",
    "partment": "专案一组",
    "tel": "123",
    "email": "meng@baal.xyz",
    "tag": "专案",
    "creater": "",
    "time": "2016-10-24T08:10:51.101Z",
    "token": ""
  },
  {
    "userid": "FDA8B18B-E6EB-4C80-8A4B-0B2B27AEB7E2",
    "username": "汪小雨",
    "password": "19bdec7440acd44c669240ed534fc2f6",
    "partment": "专案三组",
    "tel": "123",
    "email": "xiaoyu@baal.xyz",
    "tag": "专案",
    "creater": "",
    "time": "2016-10-24T08:12:28.869Z",
    "token": ""
  }
]

创建数据模型User类,属性如下:

public class User {
	private String userid;
	private String username;
	private String password;
	private String partment;
	private String tel;
	private String email;
	private String tag;
	private String creater;
	private String time;
	private String token;

	......
}

1、使用fastjson

读取json文件转化为list:

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class JsonToList_fastjson {
	private static final String User_Path = "d:/user.json";
	private static final String Message_Path = "d:/message.json";
	
	public static List<User> getUsers() {
		String userString = fileToStr(User_Path);
		List<User> list = JSONObject.parseArray(userString,User.class);
		return list;
	}

	public static String fileToStr(String filepath) {
		File file = new File(filepath);
		StringBuffer sb = new StringBuffer();
		InputStreamReader isr = null;
		try {
			isr = new InputStreamReader(new FileInputStream(file), "UTF-8");
			while (isr.ready()) {
				sb.append((char) isr.read());
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				isr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return sb.toString();
	}

	public static void main (String [] args) {
		
		List<User> listUsers = getUsers();
		for (User user : listUsers) {
			System.out.println(user.getEmail());
		}

		JSONArray array = (JSONArray) JSONArray.toJSON(listUsers);
		System.out.println(array);
	}
}

2、使用JSON-lib,相关jar包也可以在这里下载

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.List;

import net.sf.json.JSONArray;

public class JsonToList {

	private static final String User_Path = "d:/user.json";

	@SuppressWarnings("unchecked")
	public static List<User> getUsers() {
		String userString = fileToStr(User_Path);
		JSONArray array = JSONArray.fromObject(userString);
		List<User> list = null;
		list = (List<User>) JSONArray.toCollection(array, User.class);

		return list;
	}

	public static String fileToStr(String filepath) {
		File file = new File(filepath);
		StringBuffer sb = new StringBuffer();
		InputStreamReader isr = null;
		try {
			isr = new InputStreamReader(new FileInputStream(file), "UTF-8");
			while (isr.ready()) {
				sb.append((char) isr.read());
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			try {
				isr.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return sb.toString();
	}

	public static void main(String[] args) {

		List<User> list = getUsers();
		for (User user : list) {
			System.out.println(user.getUsername());
		}

		JSONArray array = JSONArray.fromObject(list);
		System.out.println(array);
	}
}

JSON-lib API :Doc

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172289.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JMeter性能测试之负载与监听实战

    JMeter性能测试之负载与监听实战

    2021年7月13日
    97
  • DSP28335学习记录(一)

    DSP28335学习记录(一)本文记录dsp28335的各种外设的配置方法,常见模块的驱动方法,以及各种常见问题的解决方法,持续更新

    2022年10月19日
    1
  • ipv6的ping_ping详解

    ipv6的ping_ping详解背景为什么需要使用IPv6,一个最直接的答案就是目前广泛应用的IPv4已经无法提供足够的IP地址来满足迅速增长的网络。IPv4采用32位地址长度,只有大约43亿个地址,很快就将被分配完毕。而IPv6采用128位的地址长度,几乎可以不受限制的提供地址。当然扩大地址空间只是IPv6的众多优势中的重要一项,除此之外,IPv6还能够提高网络的整体吞吐量、改善服务质量(QoS)、安全性有更好的保证、支持即插即用和移动性、更好实现多播功能等等。IPv6的地址获取方式与IPv4有所

    2025年6月20日
    3
  • usb调试授权窗口出不来_usb调试是什么意思

    usb调试授权窗口出不来_usb调试是什么意思前段时间在玩Vysor这个Chrome扩展时遇到的一个问题:就是我在Chrome安装了Vysor扩展,但是Vysor跟我的手机老是连不上,提示我要开USB调试模式,但我的手机USB调试模式早已经打开,而且也选过“永久性授权”。-关闭USB调试再开也不行-更改连接方式也不行(MTP/PTP)-断开跟PC链接,然后撤销所有授权,再连上PC,也不见有弹出“USB调试…

    2022年9月2日
    7
  • 剖析RT-Thread中console与finsh组件实现(2)[通俗易懂]

    剖析RT-Thread中console与finsh组件实现(2)[通俗易懂]接上一章剖析RT-Thread中finsh组件实现(1),rt_device具体定义如下:其中内核基类定义如下:所以刚才串口1初始化后名称被初始化为了“usart1”,与刚才设置终端时入参刚好可以匹配。而这个标志是类型标志,串口类型即为RT_Object_Class_Device,同时也是一个静态类,所以会或上0x80其实rt_device中最重要的是传入了设备回调与操作函数指针,这些指针此时指向的是串口1的一系列操作函数。这些函数被初始化在串口1初始化的rt_hw_serial

    2022年5月12日
    37
  • 用Python写了个工具,完美破解了MySQL!!(建议收藏)

    用Python写了个工具,完美破解了MySQL!!(建议收藏)再也不怕忘记MySQL的用户名和密码了,用这个工具可以秒破MySQL,冰河强烈建议收藏!!

    2022年5月31日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号