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

                                  作者:尹正杰

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

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

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

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

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

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>groupId</groupId>
<artifactId>MyHadoop</artifactId>
<version>1.0-SNAPSHOT</version> <dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>2.7.3</version>
</dependency> <!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.17</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency> </dependencies> </project>

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

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/
package cn.org.yinzhengjie.json; public class Teacher {
private String name;
private int age; public Teacher(String name, int age) {
this.name = name;
this.age = age;
} public Teacher() {
} 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;
} public String toString() {
return "Teacher{" + "name='" + name + ", age=" + age + '}';
}
}

Teacher.java 文件内容

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/
package cn.org.yinzhengjie.json; import com.alibaba.fastjson.JSONObject; import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException; public class JsonOperation {
public static final String filePath = "D:\\10.Java\\IDE\\yhinzhengjieData\\MyHadoop\\JSON\\teacher.txt"; public static void main(String[] args) throws Exception {
generatingJSON();
System.out.println("=============我是分割线=============");
parsingJSON();
}
//生成json文本
private static void generatingJSON() throws IOException {
Teacher yzj = new Teacher("尹正杰", 18);
String json = JSONObject.toJSONString(yzj);
System.out.println(json);
FileOutputStream fos = new FileOutputStream(filePath);
byte[] buf = new byte[1024];
fos.write(json.getBytes());
fos.close();
} //解析json文本
private static void parsingJSON() throws IOException {
byte[] buf = new byte[1024];
FileInputStream fis = new FileInputStream(filePath);
//由于我的文件较小,为了实验方便我就一次性读取出来了
JSONObject json = JSONObject.parseObject( new String(buf,0,fis.read(buf)));
System.out.println(json);
}
} /*
以上代码执行结果如下:
{"age":18,"name":"尹正杰"}
=============我是分割线=============
{"name":"尹正杰","age":18}
*/

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

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

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/
package cn.org.yinzhengjie.json; public class Teacher {
private String name;
private int age; public Teacher(String name, int age) {
this.name = name;
this.age = age;
} public Teacher() {
} 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;
} public String toString() {
return "Teacher{" + "name='" + name + ", age=" + age + '}';
}
}

Teacher.java 文件内容

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/
package cn.org.yinzhengjie.json; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import java.util.ArrayList;
import java.util.List; public class JsonOperation { public static void main(String[] args) throws Exception {
listToJSON();
System.out.println("=============我是分割线=============");
jsonToList();
}
public static void listToJSON(){
Teacher yzj = new Teacher("尹正杰",18);
Teacher yzj1 = new Teacher("yinzhengjie",19);
Teacher yzj2 = new Teacher("YINZHENGJIE",20);
List<Teacher> lists=new ArrayList<Teacher>();
lists.add(yzj);
lists.add(yzj1);
lists.add(yzj2);
String listArray=JSONArray.toJSONString(lists);
System.out.println("arrayList:"+listArray);
} public static void jsonToList(){
String str ="{\"names\":[\"尹正杰\",\"yinzhengjie\"]}";
JSONObject jo = JSON.parseObject(str);
JSONArray jsonArray = jo.getJSONArray("names");
for (Object o : jsonArray) {
System.out.println(o.toString());
}
}
} /*
以上代码执行结果如下:
arrayList:[{"age":18,"name":"尹正杰"},{"age":19,"name":"yinzhengjie"},{"age":20,"name":"YINZHENGJIE"}]
=============我是分割线=============
尹正杰
yinzhengjie
*/

三.小试牛刀

  是不是觉得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}
 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/
package cn.org.yinzhengjie.json; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import java.util.ArrayList;
import java.util.List; public class JsonOperation { public static void main(String[] args) throws Exception {
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}";
List<String> taggen = taggen(comment);
for (String s : taggen) {
System.out.println(s);
} }
/**
* 解析商家评论数据
*/
public static List<String> taggen(String comment){
JSONObject jo = JSON.parseObject(comment);
JSONArray jArray = jo.getJSONArray("extInfoList");
if(jArray != null && jArray.size() != 0){
List<String> list = new ArrayList<String>();
//通过jArray得到第一个json串,作为json对象
JSONObject jo2 = jArray.getJSONObject(0);
JSONArray jArray2 = jo2.getJSONArray("values");
if(jArray2 != null && jArray2.size() != 0){
for (Object o : jArray2) {
//System.out.println(o.toString());
list.add(o.toString());
}
return list;
}
}
return null;
}
} /*
以上代码执行结果如下:
环境优雅
性价比高
干净卫生
停车方便
音响效果好
*/

Java基础-处理json字符串解析案例的更多相关文章

  1. Java基础97 json插件的使用(java对象和json字符串对象之间的转换)

    1.需要用到的包 2.实例 实体类 people package com.shore.entity; /** * @author DSHORE/2019-4-19 * */ public class ...

  2. IT兄弟连 JavaWeb教程 AJAX以及JSON字符串经典案例

    案例需求:客户端发送AJAX请求服务器端获取用户信息的数据. 案例实现: 在服务器端要将Java对象转换成JSON字符串,如果使用拼接JSON字符串的方式非常繁琐,并且非常容易出错,所以一般会借助第三 ...

  3. Java基础-零拷贝技术应用案例

    Java基础-零拷贝技术应用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 零拷贝技术在Hadoop生态圈中很多组件得到应用,典型的比如kafka组件,它就很成功的应用了零拷贝 ...

  4. java对象转为json字符串

    1.使用fastjson开源json工具类库 2.java类未添加get()和set()方法,java对象初始化时,使用fastjson解析,得到的json字符串有时为空{} 3.Java对象转为js ...

  5. Java对象与Json字符串的转换

    Java对象与Json字符串的转换 JSON是一种轻量级的数据交换格式,常用于前后端的数据交流 后端 : 前端 Java对象 > JsonString Java对象 < jsonStrin ...

  6. JackSon将java对象转换为JSON字符串

    JackSon可以将java对象转换为JSON字符串,步骤如下: 1.导入JackSon 的jar包 2.创建ObjectMapper对象 3.使用ObjectMapper对象的writeValueA ...

  7. java对象与Json字符串之间的转化(fastjson)

    1. 首先引入jar包 在pom.xml文件里加入下面依赖: <dependency> <groupId>com.alibaba</groupId> <art ...

  8. (后端)JackSon将java对象转换为JSON字符串(转)

    转载小金金金丶园友: JackSon可以将java对象转换为JSON字符串,步骤如下: 1.导入JackSon 的jar包 2.创建ObjectMapper对象 3.使用ObjectMapper对象的 ...

  9. 前台的js对象数组传到后台处理。在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>

    前台的js对象数组传到后台处理.在前台把js对象数组转化为json字符串,在后台把json字符串解析为List<>

随机推荐

  1. 阿里云centos 安装禅道

    下载 我的阿里云服务器系统是 centos6.8 64 位,下载的禅道版本是 Linux 64位一键安装包(适用于Linux 64位) 由于阿里云服务器没桌面,所以下载用不了浏览器,可考虑在本地下载后 ...

  2. SpringBoot日记——Docker的使用

    跟进互联网的浪潮有时候也挺难的,还没学完就出现新技术了…… 今天来说说,如何使用docker吧~ docker的安装配置 Docker是一个容器,我们怎么理解这个概念.我们做windows系统的时候会 ...

  3. Python3 str去除空格

    一.去除str两端空格(strip()) a.去除左端空格  lstrip() str0='abcdef' str1=' abcdef' print(str0) print(str1.lstrip() ...

  4. React笔记-事件分发

    事件分发 之前讲述了事件如何绑定在document上,那么具体事件触发的时候是如何分发到具体的监听者呢?我们接着上次注册的事件代理看.当我点击update counter按钮时,触发注册的click事 ...

  5. 基于skip-gram做推荐系统的想法

    一.人工智能之自然语言处理 自然语言处理(Natural Language Processing, NLP),是人工智能的分支科学,意图是使计算机具备处理人类语言的能力. “处理人类语言的能力”要达到 ...

  6. Mac下搭建lamp

    Mac下搭建lamp Mac 自带了Apache,并默认支持PHP环境,只需要配置Apache和PHP即可使用.需要单独安装mysql服务端. Apache 基础配置 Apache支持PHP配置 Ap ...

  7. Linux读书笔记第一周

    1.Unix内核的特点:简洁:抽象:可移植性:进程创建:清晰的层次化结构. Linux内核是一种自由/开源的软件,设计思想与Unix系统相似(一切皆文件,特定的单一用途 & 简单的组合方式) ...

  8. 20135327郭皓--Linux内核分析第三周 构造一个简单的Linux系统MenuOS

    Linux内核分析第三周  构造一个简单的Linux系统MenuOS 前提回顾 1.计算机是如何工作的三个法宝 1.存储程序计算机 2.函数调用堆栈 3.中断 2.操作系统的两把宝剑 中断上下文的切换 ...

  9. 第二阶段冲刺——two

    个人任务: 王金萱:优化作业查询结果,按学号排列. 马佳慧:测试登录功能并优化. 司宇航:修复博客作业查询功能. 季方:测试博客作业查询功能. 站立会议: 任务看板和燃尽图:

  10. javascript 函数的几种声明函数以及应用环境

    本页只列出常用的几种方式,当然还有比如new Function()以及下面三种的组合. 1.函数式声明 例子:function sum(a,b){ return a+b; }; 2.函数表达式声明(匿 ...