赞
踩
① Json 表示的是文本数据的一种表示格式
② Json 格式的文件在数据开发过程中经常能够使用到
③ 一个JONS表示为一个对象(没有方法的对象),那么就有属性名和属性值
数据形式 => Key Value形式 => Key表示为属性名 Value表示属性值
Json文件中的数据有固定的格式
格式:
1. Json文件需要使用{}进行将所有的数据包含起来
2. Json中 Key Value形式 使用:将Key和Value隔开
3. 对于Json中的Key形式 要求只能为一个字符串 (其他语言中要求Key是一个不可变的数据即可)
4. 对于Json中的Value形式不固定,可以为 字符串 数值 小数点 ...
5. 对于多个KeyValue数据要求使用 , 对其进行隔开
6. 对于多个Json可以使用数组形式表示 其格式可以用 [json,json]
7. 对于Json中的Value可以是一个Json
8. 对于Json中的Value可以是一个Json数组
json取值:
需要使用编码的方式,将当前的Json文本加载到对应的对象中(以Java为例),通过操作对象,获取其中的数据
① 对于fastJson2包中,可以通过JSON类中静态方法parse对数据进行解析
② 获取数据是通过Key进行获取的
对于Value类型可以通过不同的方法进行选择不同的返回值类型
③ 在Java的字符串中,可以使用''来代替 ""
④ 对于JSON数组和JSON对象需要使用不同的解析方式
Java中解析Json可以使用第三方的Json Jar包
第三方jar包是指 由其他开发者所提供的库,在提供的库中会由相对应的类来完成特点的功能
例如: python -> pip install 按照第三方包
Java中获取及如何使用第三方包?
获取fastjson2-2.0.40.jar
获取包的方式:
1.去对应提供包的第三方官网下载
2.去集中的仓库中下载对应的包(MVN的仓库https://mvnrepository.com/)
找到对应版本
点击jar下载
下一步,导入idea中
在IDEA项目根路径中创建目录lib并将jar包复制到当前lib目录下
右键选择jar包,再点击add as…(添加到库)
点击OK
如何看是否导进去?
项目结构里面查看如:
package com.test.demo23; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; public class Demo12Json { public static void main(String[] args) { /* JSON.parse 可以对Json的字符串进行解析 */ String str="{'1':'one','2':'two'}"; Object parse = JSON.parse(str);// 直接返回的是一个Object对象 但是对于Json有专门的Json对象 JSONObject JSONObject jsonObject = JSON.parseObject(str);//返回JSONObject对象 String value = jsonObject.getString("1");//JSONObject获取key值2,返回value值 System.out.println("value:"+value);//value:one String jsonStr = "{'name':'王建军','age': 20,'score':80.5}"; JSONObject jsonObject2 = JSON.parseObject(jsonStr); String name = jsonObject2.getString("name"); System.out.println("name:" + name); Integer age = jsonObject2.getInteger("age"); System.out.println("age:" + age); Double score = jsonObject2.getDouble("score"); System.out.println("score:" + score); //Json数组 String jsonArr = "[{'name':'王建军','age': 20,'score':80.5},{'name':'张胜兵','age': 18,'score':90.5}]"; //转换成Json数组 JSONArray jsonArray = JSON.parseArray(jsonArr); // 数组可以通过下标进行取值 JSONObject jsonObjectIndex1 = jsonArray.getJSONObject(1); System.out.println("name:"+jsonObjectIndex1.getString("name"));//name:张胜兵 // fori形式获取 for (int i = 0; i < jsonArray.size(); i++) { JSONObject jsonObjectIndex = jsonArray.getJSONObject(i); String oneName = jsonObjectIndex.getString("name"); System.out.println(oneName); } //王建军 //张胜兵 } }
package com.test.demo23; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; public class Demo13ToJson { public static void main(String[] args) throws FileNotFoundException { /* 在fastJson2包中:对于一个对象,如果要转成JSON,那么对象中需要设置get Set 方法 */ // 创建ArrayList并添加User对象 ArrayList<User> arrayList = new ArrayList<>(); arrayList.add(new User("李帅臻", "1314520")); arrayList.add(new User("李真师", "3344520")); // 将对象转换成JSON字符串并打印 //方式一 for (User user : arrayList) { JSONObject json = (JSONObject) JSON.toJSON(user); System.out.println(json.toString()); //方式二 String jsonString = JSON.toJSONString(user); System.out.println(jsonString); // 直接将数据写入到一个Json文件中 // JSON.writeTo(new FileOutputStream("data/user.json",true),user); } //上述结果: /* {"name":"李帅臻","passwd":"1314520"} {"name":"李帅臻","passwd":"1314520"} {"name":"李真师","passwd":"3344520"} {"name":"李真师","passwd":"3344520"} */ // 使用间接的方式将 ArrayList转成一个 JSONArray JSONArray jsonArray = new JSONArray(); for (User user : arrayList) { Object json = JSON.toJSON(user); jsonArray.add(json); } // [{"name":"李帅臻","passwd":"1314520"},{"name":"李真帅","passwd":"3344520"}] System.out.println(jsonArray.toString()); // jsonArray 如何转成一个ArrayList // 可以将JSON字符串转成一个List集合 List<User> users = JSON.parseArray(jsonArray.toString(), User.class); System.out.println(users); //[User{name='李帅臻', passwd='1314520'}, User{name='李真师', passwd='3344520'} // 将一个json字符串对象转成自定义对象 User user = JSON.parseObject("{\"name\":\"李真帅\",\"passwd\":\"3344520\"}", User.class); System.out.println(user); //User{name='李真帅', passwd='3344520'} } // 定义User类 static class User { private String name; private String passwd; public User(String name, String passwd) { this.name = name; this.passwd = passwd; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPasswd() { return passwd; } public void setPasswd(String passwd) { this.passwd = passwd; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", passwd='" + passwd + '\'' + '}'; } // getter和setter方法省略... } }
toString() {
return “User{” +
“name='” + name + ‘’’ +
“, passwd='” + passwd + ‘’’ +
‘}’;
}
// getter和setter方法省略…
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。