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 + '}'; } }

更多精彩