java操作mysql json字符串_Java基础-处理json字符串解析案例

Java基础-处理json字符串解析案例

作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

作为一名开发人员,想必大家或多或少都有接触到XML文件,XML全称为“extensible markup language”,即可扩展性标记语言。它由于可读性很好,但是在网络传输上,这种数据格式往往很占用带宽等诸多缺点,因此就诞生了Json,它比XML数据更小、更快、更容易解析。数据由名称-值 对表示,由逗号分隔开,花括号保存对象,方括号保存数组。Json值可以是:数字/字符串/逻辑值/数组/对象/null。

接下来我们就一起看看如何创建一个json文件以及如何解析json文件。

一.java自定义对象对象和json字符串的互转

1>.添加Maven依赖(添加最后一个依赖json即可)

1 <?xml version="1.0" encoding="UTF-8"?>

2

3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

5 4.0.0

6

7 groupId

8 MyHadoop

9 1.0-SNAPSHOT

10

11

12

13 org.apache.hadoop

14 hadoop-client

15 2.7.3

16

17

18

19

20 junit

21 junit

22 4.12

23 test

24

25

26

27 mysql

28 mysql-connector-java

29 5.1.17

30

31

32 com.alibaba

33 fastjson

34 1.2.47

35

36

37

38

39

2>.具体实现代码如下:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 /*

2 @author :yinzhengjie3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/

4 EMAIL:y1053419035@qq.com5 */

6 packagecn.org.yinzhengjie.json;7

8 public classTeacher {9 privateString name;10 private intage;11

12 public Teacher(String name, intage) {13 this.name =name;14 this.age =age;15 }16

17 publicTeacher() {18 }19

20 publicString getName() {21 returnname;22 }23

24 public voidsetName(String name) {25 this.name =name;26 }27

28 public intgetAge() {29 returnage;30 }31

32 public void setAge(intage) {33 this.age =age;34 }35

36 publicString toString() {37 return "Teacher{" + "name='" + name + ", age=" + age + '}';38 }39 }

Teacher.java 文件内容

1 /*

2 @author :yinzhengjie3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/

4 EMAIL:y1053419035@qq.com5 */

6 packagecn.org.yinzhengjie.json;7

8 importcom.alibaba.fastjson.JSONObject;9

10 importjava.io.FileInputStream;11 importjava.io.FileOutputStream;12 importjava.io.IOException;13

14 public classJsonOperation {15 public static final String filePath = "D:\\10.Java\\IDE\\yhinzhengjieData\\MyHadoop\\JSON\\teacher.txt";16

17 public static void main(String[] args) throwsException {18 generatingJSON();19 System.out.println("=============我是分割线=============");20 parsingJSON();21 }22 //生成json文本

23 private static void generatingJSON() throwsIOException {24 Teacher yzj = new Teacher("尹正杰", 18);25 String json =JSONObject.toJSONString(yzj);26 System.out.println(json);27 FileOutputStream fos = newFileOutputStream(filePath);28 byte[] buf = new byte[1024];29 fos.write(json.getBytes());30 fos.close();31 }32

33 //解析json文本

34 private static void parsingJSON() throwsIOException {35 byte[] buf = new byte[1024];36 FileInputStream fis = newFileInputStream(filePath);37 //由于我的文件较小,为了实验方便我就一次性读取出来了

38 JSONObject json = JSONObject.parseObject( new String(buf,0,fis.read(buf)));39 System.out.println(json);40 }41 }42

43

44

45

46 /*

47 以上代码执行结果如下:48 {"age":18,"name":"尹正杰"}49 =============我是分割线=============50 {"name":"尹正杰","age":18}51 */

二.Java数据类型和Json互相转换案例

以下是list和json字符串的互转,当然,map的转换json和其方法类似,我这里就不多举例了:

8f900a89c6347c561fdf2122f13be562.png

961ddebeb323a10fe0623af514929fc1.png

1 /*

2 @author :yinzhengjie3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/

4 EMAIL:y1053419035@qq.com5 */

6 packagecn.org.yinzhengjie.json;7

8 public classTeacher {9 privateString name;10 private intage;11

12 public Teacher(String name, intage) {13 this.name =name;14 this.age =age;15 }16

17 publicTeacher() {18 }19

20 publicString getName() {21 returnname;22 }23

24 public voidsetName(String name) {25 this.name =name;26 }27

28 public intgetAge() {29 returnage;30 }31

32 public void setAge(intage) {33 this.age =age;34 }35

36 publicString toString() {37 return "Teacher{" + "name='" + name + ", age=" + age + '}';38 }39 }

Teacher.java 文件内容

1 /*

2 @author :yinzhengjie3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/

4 EMAIL:y1053419035@qq.com5 */

6 packagecn.org.yinzhengjie.json;7

8 importcom.alibaba.fastjson.JSON;9 importcom.alibaba.fastjson.JSONArray;10 importcom.alibaba.fastjson.JSONObject;11

12 importjava.util.ArrayList;13 importjava.util.List;14

15 public classJsonOperation {16 17

18 public static void main(String[] args) throwsException {19 listToJSON();20 System.out.println("=============我是分割线=============");21 jsonToList();22 }23 public static voidlistToJSON(){24 Teacher yzj = new Teacher("尹正杰",18);25 Teacher yzj1 = new Teacher("yinzhengjie",19);26 Teacher yzj2 = new Teacher("YINZHENGJIE",20);27 List lists=new ArrayList();28 lists.add(yzj);29 lists.add(yzj1);30 lists.add(yzj2);31 String listArray=JSONArray.toJSONString(lists);32 System.out.println("arrayList:"+listArray);33 }34

35 public static voidjsonToList(){36 String str ="{\"names\":[\"尹正杰\",\"yinzhengjie\"]}";37 JSONObject jo =JSON.parseObject(str);38 JSONArray jsonArray = jo.getJSONArray("names");39 for(Object o : jsonArray) {40 System.out.println(o.toString());41 }42 }43 }44

45 /*

46 以上代码执行结果如下:47 arrayList:[{"age":18,"name":"尹正杰"},{"age":19,"name":"yinzhengjie"},{"age":20,"name":"YINZHENGJIE"}]48 =============我是分割线=============49 尹正杰50 yinzhengjie51 */

三.小试牛刀

是不是觉得json处理其实蛮简单的,不是吗?接下来我们来练习以下,解析以下的字符串:需要解析商家评论数据:

{"reviewPics":null,"extInfoList":[{"title":"contentTags","values":["环境优雅","性价比高","干净卫生","停车方便","音响效果好"],"desc":"","defineType":0},{"title":"tagIds","values":["24","300","852","506","173"],"desc":"","defineType":0}],"expenseList":null,"reviewIndexes":[2],"scoreList":null}

1 /*

2 @author :yinzhengjie3 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/

4 EMAIL:y1053419035@qq.com5 */

6 packagecn.org.yinzhengjie.json;7

8 importcom.alibaba.fastjson.JSON;9 importcom.alibaba.fastjson.JSONArray;10 importcom.alibaba.fastjson.JSONObject;11

12 importjava.util.ArrayList;13 importjava.util.List;14

15 public classJsonOperation {16 17

18 public static void main(String[] args) throwsException {19 String comment = "{\"reviewPics\":null,\"extInfoList\":[{\"title\":\"contentTags\",\"values\":[\"环境优雅\",\"性价比高\",\"干净卫生\",\"停车方便\",\"音响效果好\"],\"desc\":\"\",\"defineType\":0},{\"title\":\"tagIds\",\"values\":[\"24\",\"300\",\"852\",\"506\",\"173\"],\"desc\":\"\",\"defineType\":0}],\"expenseList\":null,\"reviewIndexes\":[2],\"scoreList\":null}";20 List taggen =taggen(comment);21 for(String s : taggen) {22 System.out.println(s);23 }24

25 }26 /**

27 * 解析商家评论数据28 */

29 public static Listtaggen(String comment){30 JSONObject jo =JSON.parseObject(comment);31 JSONArray jArray = jo.getJSONArray("extInfoList");32 if(jArray != null && jArray.size() != 0){33 List list = new ArrayList();34 //通过jArray得到第一个json串,作为json对象

35 JSONObject jo2 = jArray.getJSONObject(0);36 JSONArray jArray2 = jo2.getJSONArray("values");37 if(jArray2 != null && jArray2.size() != 0){38 for(Object o : jArray2) {39 //System.out.println(o.toString());

40 list.add(o.toString());41 }42 returnlist;43 }44 }45 return null;46 }47 }48

49 /*

50 以上代码执行结果如下:51 环境优雅52 性价比高53 干净卫生54 停车方便55 音响效果好56 */

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值