首页 > 编程知识 正文

java处理json数据,java读取json文件

时间:2023-05-03 06:08:09 阅读:163679 作者:3768

《java世界观》文集说明

本文所记载的内容都是java的学习笔记,主要重点记录了概念。 可能无法为每个概念列出完整的代码示例。 更多代码示例请进入《java种田记》文集

本文主要介绍了开课吧的一门新的职务课-JavaEE开发工程师V2.0

如果有错误和疏漏的地方,欢迎大家指出来

约翰先生

javascriptobjectnotation,JS对象配置文件)是一种轻量级数据交换格式,主要用于网络数据传输。

这里简单介绍一下JSON中应该注意的JS语法。

{包含在大括号中的部分是对象}

[方括号中的部分是数组]

对象中的属性和值以键值对key-value pair方式存储并通过:连接

键值对中键key是一个字符串,在js分析期间可以省略“”,但不建议省略键周围的双引号,因为Java分析可能会报告错误

键值对的值value可以是JS中任何类型的数据

对象和数组可以相互嵌套

以下是一个例子

[

{

' id': 1,

' name': '琼脂爱玉'、

' ice': 'mldgq ',

' sugar': '糖很少',

' addons': [

“牛奶罩”

“椰子”

]

(,

{

' id': 2、

' name': '乳盖乌龙',

“ice': '脱冰',

' sugar': '七分糖',

' addons': [

“珍珠”、

椰子树

]

}

]

分析是指在Java对象和JSON之间进行相互转换。 目前,Java没有本机JSON分析代码,因此通常使用开源JSON分析工具进行分析。 常见的是谷歌的Gson和蚂蚁的FastJson。

Gson解析JSON

以之前列举的这种饮料的说明为例,以下是饮料类的代码

package com.kaikeba.json;

import java.util.ArrayList;

import java.util.Arrays;

import java.util.List;

import java.util.Objects;

//*

*测试用饮料

*

* @author蜗杆先生

* @date 2020/8/19

*/

public class Drink {

私有int id;

私有字符串名称;

私有字符串ice;

private String sugar;

私有列表地址;

公共drink (intid,String name,String ice,String sugar,List addons ) {

this.id=id;

this.name=name;

this.ice=ice;

this.sugar=sugar;

this.addons=addons;

}

公共链接(intid,String name,String ice,String sugar ) {

this(id,name,ice,sugar,new ArrayList ) );

}

publicdrink(intid,String name,String ice,String sugar,String. addons ) {

this(id,name,ice,sugar );

添加地址(addons;

}

公共虚拟地址(字符串.地址) )。

addons.addall(Arrays.aslist ) addon );

}

publicvoidremoveaddons (string . addon )。

for(strings:addon ) {

addons.remove(s );

}

}

公共获取

返回id;

}

公共void setid (intid ) {

this.id=id;

}

公共字符串获取名称

return name;

}

public void setName(String name) {

this.name = name;

}

public String getIce() {

return ice;

}

public void setIce(String ice) {

this.ice = ice;

}

public String getSugar() {

return sugar;

}

public void setSugar(String sugar) {

this.sugar = sugar;

}

@Override

public String toString() {

StringBuilder output = new StringBuilder(String.format("%d: %s %s %s", id, name, ice, sugar));

for (String addon : addons) {

output.append(String.format(",加%s", addon));

}

return output.toString();

}

@Override

public boolean equals(Object o) {

if (this == o) {

return true;

}

if (o == null || getClass() != o.getClass()) {

return false;

}

Drink drink = (Drink) o;

return id == drink.id;

}

@Override

public int hashCode() {

return Objects.hash(id);

}

}

以下是利用Gson实现的解析

String = new Gson().toJSON();

= new Gson().fromJson(, .class);

package com.kaikeba.json;

import com.google.gson.Gson;

import java.util.HashMap;

import java.util.List;

/**

* Gson 解析 JSON

*

* @author 蜗先生

* @date 2020/8/19

*/

public class Demo1 {

public static void main(String[] args) {

// 创建准备转换的对象

Drink drink = new Drink(1, "寒天爱玉", "mldgq", "少糖", "奶盖", "椰果");

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

// 转换成JSON

Gson gson = new Gson();

String json = gson.toJson(drink);

System.out.println(json);

// 将JSON转换成对象

Drink drink1 = gson.fromJson(json, Drink.class);

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

System.out.println(drink.equals(drink1));

// 转换成Map和List对象

HashMap data = gson.fromJson(json, HashMap.class);

List addons = (List) data.get("addons");

System.out.println(addons.getClass());

System.out.println(addons.get(addons.size() - 1));

}

}

运行结果如下

1: 寒天爱玉 mldgq 少糖,加奶盖,加椰果

{"id":1,"name":"寒天爱玉","ice":"mldgq","sugar":"少糖","addons":["奶盖","椰果"]}

1: 寒天爱玉 mldgq 少糖,加奶盖,加椰果

true

class java.util.ArrayList

椰果

FastJson解析JSON

String = JSON.toJSONString();

= JSON.parseObject(, .class);

List list = JSON.parseArray(, .class);

package com.kaikeba.json;

import com.alibaba.fastjson.JSON;

import java.io.BufferedReader;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.IOException;

import java.util.List;

/**

* FastJson 解析 JSON

*

* @author 蜗先生

* @date 2020/8/19

*/

public class Demo2 {

public static void main(String[] args) {

// 创建准备转换的对象

Drink drink = new Drink(1, "寒天爱玉", "mldgq", "少糖", "奶盖", "椰果");

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

// 转换成JSON

String json = JSON.toJSONString(drink);

System.out.println(json);

// 将JSON转换成对象 {"id":1,"name":"寒天爱玉","ice":"mldgq","sugar":"少糖","addons":["奶盖","椰果"]}

Drink drink1 = JSON.parseObject("{"id":1,"name":"寒天爱玉","ice":"mldgq","sugar":"少糖","addons":["奶盖","椰果"]}", Drink.class);

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

System.out.println(drink.equals(drink1));

// 将JSON转换成多个对象

try (BufferedReader br = new BufferedReader(new FileReader("doc/test.json"))) {

StringBuilder sb = new StringBuilder();

String line;

while ((line = br.readLine()) != null) {

sb.append(line);

}

json = sb.toString();

} catch (FileNotFoundException e) {

System.out.println("请检查文件路径");

System.exit(1);

} catch (IOException ioException) {

ioException.printStackTrace();

}

System.out.println("包含了多个对象的json字符串如下:");

System.out.println(json);

List drinks = JSON.parseArray(json, Drink.class);

System.out.println("以下是转换好的多个对象:");

for (Drink obj : drinks) {

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

}

}

}

以下是运行结果

1: 寒天爱玉 mldgq 少糖,加奶盖,加椰果

{"ice":"mldgq","id":1,"name":"寒天爱玉","sugar":"少糖"}

1: 寒天爱玉 mldgq 少糖,加奶盖,加椰果

true

包含了多个对象的json字符串如下:

[ { "id": 1, "name": "寒天爱玉", "ice": "mldgq", "sugar": "少糖", "addons": [ "奶盖", "椰果" ] }, { "id": 2, "name": "奶盖乌龙", "ice": "去冰", "sugar": "七分糖", "addons": [ "珍珠", "椰果" ] }]

以下是转换好的多个对象:

1: 寒天爱玉 mldgq 少糖,加奶盖,加椰果

2: 奶盖乌龙 去冰 七分糖,加珍珠,加椰果

注意点:

“doc/test.json”里面的内容就是最开始的举例内容

可以发现FastJson转换成的JSON字符串是无序的,和Gson转换成的JSON字符串不同,直接转回对象可能报错

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。