使用第三方库com.alibaba.fastjson解析,依赖包

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>fastjson</artifactId>
  4. <version>1.2.3</version>
  5. </dependency>

 

JSON 值可以是:

  • 数字(整数或浮点数)
  • 字符串(在双引号中)
  • 逻辑值(true 或 false)
  • 数组(在中括号中)
  • 对象(在大括号中)
  • null

json模板数据

  1. {
  2. "person": {
  3. "id": "123",
  4. "name": "name",
  5. "address": "address"
  6. }
  7. }

使用

  1. jsonObject.getJSONObject

使用第三方库,解析代码如下:

  1. @Test
  2. public void testJsonObject(){
  3. String jsonString = "{\n" +
  4. " \"person\":{\n" +
  5. " \"id\":\"123\",\n" +
  6. " \"name\":\"name\",\n" +
  7. " \"address\":\"address\"\n" +
  8. " }\n" +
  9. "}";
  10. try {
  11. JSONObject jsonObject = JSONObject.parseObject(jsonString);
  12. JSONObject personObject = jsonObject.getJSONObject("person");
  13. if(personObject!=null){
  14. Person person = new Person();
  15. person.setId(personObject.getString("id"));
  16. person.setName(personObject.getString("name"));
  17. person.setAddress(personObject.getString("address"));
  18. System.out.println(person);
  19. }
  20. } catch (Exception e) {
  21. e.printStackTrace();
  22. }
  23. }

运行结果如下:

模板数据:

  1. {
  2. "students": [
  3. "xiaoming",
  4. "xiaohua",
  5. "daming",
  6. "dahua"
  7. ]
  8. }

使用

  1. jsonObject.getJSONArray

使用第三方库,解析代码如下:

  1. @Test
  2. public void testJsonArray(){
  3. String jsonString = "{\n" +
  4. " \"students\": [\n" +
  5. " \"xiaoming\",\n" +
  6. " \"xiaohua\",\n" +
  7. " \"daming\",\n" +
  8. " \"dahua\"\n" +
  9. " ]\n" +
  10. "}";
  11. try {
  12. JSONObject jsonObject = JSONObject.parseObject(jsonString);
  13. JSONArray jsonArray = jsonObject.getJSONArray("students");
  14. for (int i = 0; i <jsonArray.size(); i++) {
  15. System.out.println(jsonArray.get(i));
  16. }
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. }
  20. }

运行结果如下:

模板数据:

  1. {
  2. "persons": [
  3. {
  4. "id": "1",
  5. "name": "xiaoming",
  6. "address": "address"
  7. },
  8. {
  9. "id": "2",
  10. "name": "xiaohua",
  11. "address": "address"
  12. },
  13. {
  14. "id": "3",
  15. "name": "daming",
  16. "address": "address"
  17. },
  18. {
  19. "id": "4",
  20. "name": "dahua",
  21. "address": "address"
  22. }
  23. ]
  24. }

使用第三方库,解析代码如下:

  1. @Test
  2. public void testJsonArrayAndObject(){
  3. String jsonString = "{\n" +
  4. " \"persons\": [\n" +
  5. " {\n" +
  6. " \"id\": \"1\",\n" +
  7. " \"name\": \"xiaoming\",\n" +
  8. " \"address\": \"address\"\n" +
  9. " },\n" +
  10. " {\n" +
  11. " \"id\": \"2\",\n" +
  12. " \"name\": \"xiaohua\",\n" +
  13. " \"address\": \"address\"\n" +
  14. " },\n" +
  15. " {\n" +
  16. " \"id\": \"3\",\n" +
  17. " \"name\": \"daming\",\n" +
  18. " \"address\": \"address\"\n" +
  19. " },\n" +
  20. " {\n" +
  21. " \"id\": \"4\",\n" +
  22. " \"name\": \"dahua\",\n" +
  23. " \"address\": \"address\"\n" +
  24. " }\n" +
  25. " ]\n" +
  26. "}";
  27. try {
  28. JSONObject jsonObject = JSONObject.parseObject(jsonString);
  29. JSONArray jsonArray = jsonObject.getJSONArray("persons");
  30. for (int i = 0; i <jsonArray.size(); i++) {
  31. JSONObject jsonArrayObjectItem = JSONObject.parseObject(jsonArray.get(i).toString());
  32. if(jsonArrayObjectItem!=null){
  33. Person person = new Person();
  34. person.setId(jsonArrayObjectItem.getString("id"));
  35. person.setName(jsonArrayObjectItem.getString("name"));
  36. person.setAddress(jsonArrayObjectItem.getString("address"));
  37. System.out.println(person);
  38. }
  39. }
  40. } catch (Exception e) {
  41. e.printStackTrace();
  42. }
  43. }

解析结果如下:

 

 

下面来个小练习,可以下载这个地址的文件:简单的练习

链接:https://pan.baidu.com/s/1CWReej0FPmI1IHketA4Yxg 密码:5oy4

大家可以解析一下,练练手,这里就不公布答案了。以后有时间补上答案。我要求返回的数据格式是这样的。

  1. {
  2. "sheet_num": "100",
  3. "result": [
  4. {
  5. "key?": "result",
  6. "NoNodeId": "?",
  7. "nodeId": "?"
  8. }
  9. ],
  10. "desc": "所有的{nodeId}相加",
  11. "Nodesc": "所有的{NoNodeId}相加",
  12. "text": "{desc} \n {Nodesc}"
  13. }

key?即取所有value等于result的key,

取所有NoNodeId的值,并存储数组里面。

取所有nodeId的值,并存储数组里面。

desc 就是所有的nodeId相加

Nodesc 就是所有的NoNodeId相加

text,就是desc加上回车,再加Nodesc

版权声明:本文为ssrs-wanghao原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/ssrs-wanghao/articles/9339185.html