java----JSON
JSON:
下载组件 GSON jar 包
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。https://mvnrepository.com/artifact/com.google.code.gson/gson
创建JSON
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import java.io.*;
import java.util.ArrayList;
public class Demo {
public static void main(String[] args) throws IOException {
createJson();
}
public static void createJson(){
ArrayList<Person> list = new ArrayList<>();
list.add(new Person("花花",10));
list.add(new Person("哈哈",12));
JsonArray jsonElements = new JsonArray();
for (int i = 0; i < list.size(); i++) {
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("name",list.get(i).getName());
jsonObject.addProperty("age",list.get(i).getAge());
jsonElements.add(jsonObject);
}
//
System.out.println(jsonElements.toString());
try {
BufferedWriter bw = new BufferedWriter(new FileWriter("a.json"));
bw.write(jsonElements.toString());
bw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class Person{
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person() {
}
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;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
解析json数据
必须严格准守解析流程,中途如果出现错误,就会发生解析失败
[] : beginArray;
{} : beginObject;
import com.google.gson.stream.JsonReader;
import java.io.*;
import java.util.ArrayList;
public class Demo {
public static void main(String[] args){
jsonParse();
}
public static void jsonParse(){
try {
InputStream resourceAsStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("json\\person_json.json");
InputStreamReader inputStreamReader = new InputStreamReader(resourceAsStream);
//json解释工具a
JsonReader jsonReader = new JsonReader(inputStreamReader);
ArrayList<Person> nameList = new ArrayList<>();
//开始解析数组
jsonReader.beginArray();
while (jsonReader.hasNext()){
nameList.add(parsePerson(jsonReader));
}
//结束解析数组
jsonReader.endArray();
nameList.forEach((p)-> System.out.println(p));
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
private static Person parsePerson(JsonReader jsonReader) throws IOException {
Person person = new Person();
jsonReader.beginObject();
while (jsonReader.hasNext()){
String name = jsonReader.nextName();
if ("name".equals(name)){
//遇到字符串了,必须要nextString()掉,即使什么都不做,也必须要写
//否则会报错
person.setName(jsonReader.nextString());
}else if("age".equals(name)){
person.setAge(Integer.parseInt(jsonReader.nextString()));
}
}
jsonReader.endObject();
return person;
}
}
class Person{
private String name;
private int age;
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;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
更多精彩

