使用JSONObject解析和生成json
创建JSON
引用org.json包,推荐通过maven引用
1、直接构建
JSONObject obj = new JSONObject();
obj.put("sex", "male");
obj.put("age", 22);
obj.put("is_student", true);
obj.put("hobbies", new String[] {"hiking", "swimming"}); //调用toString()方法可直接将其内容打印出来
System.out.println(obj.toString()); 结果:
{"hobbies":["hiking","swimming"],"sex":"male","name":"John","is_student":true,"age":22}
key值必须为String类型, value可以为boolean、double、int、long、Object、Map以及Collection等。
当然,double以及int等类型只是在Java中,写入到json中时,统一都会以Number类型存储。
2、使用HashMap构建
Map<String, Object> data = new HashMap<String, Object>();
data.put("name", "John");
data.put("sex", "male");
data.put("age", 22);
data.put("is_student", true);
data.put("hobbies", new String[] {"hiking", "swimming"});
JSONObject obj = new JSONObject(data);
System.out.println(obj.toString());
3、使用JavaBean构建(常用,代码重用率高)
//JavaBean
public class PersonInfo {
private String name;
private String sex;
private int age;
private boolean isStudent;
private String[] hobbies;
public void setName(String name) {
this.name = name;
}
public void setSex(String sex) {
this.sex = sex;
}
public void setAge(int age) {
this.age = age;
}
public void setStudent(boolean isStudent) {
this.isStudent = isStudent;
}
public void setHobbies(String[] hobbies) {
this.hobbies = hobbies;
}
//getter不能少
public String getName() {
return name;
}
public String getSex() {
return sex;
}
public int getAge() {
return age;
}
public boolean isStudent() {
return isStudent;
}
public String[] getHobbies() {
return hobbies;
}
} //Main
import org.json.JSONObject;
public class JSONObjectSample {
public static void main(String[] args) {
createJsonByJavaBean();
}
private static void createJsonByJavaBean() {
PersonInfo info = new PersonInfo();
info.setName("John");
info.setSex("male");
info.setAge(22);
info.setStudent(true);
info.setHobbies(new String[] {"hiking", "swimming"});
JSONObject obj = new JSONObject(info);
System.out.println(obj);
}
}
解析JSON
基本类型的解析直接调用JSONObject对象的getXxx(key)方法,如果获取字符串则getString(key),以此类推。
数组的解析麻烦一点,需要通过JSONObject对象的getJSONArray(key)方法获取到一个JSONArray对象,再调用JSONArray对象的get(i)方法获取数组元素,i为索引值
@RequestMapping("/view")
public ModelAndView user(HttpServletRequest request,User user){
String path = request.getParameter("path") + "";
String contextPath = request.getContextPath();
ModelAndView mav = new ModelAndView();
JSONObject jsonObj = new JSONObject();
jsonObj = userService.getGroupList(user);
//判断JSON是否存在error_msg,存在则请求失败,返回错误信息
if(jsonObj.has("error_msg")){
String error_msg = (String) jsonObj.get("error_msg");
mav.addObject("msg",error_msg );
}else{//解析JSON,获取用户组列表
//Integer result_num= jsonObj.getInt("result_num");//返回结果数
JSONArray result = jsonObj.getJSONArray("result");
String resStr = result.toString();
resStr = resStr.replace("[", "").replace("]", "").replace("\"", "");
String[] groupList = resStr.split(",");
mav.addObject("groupList", groupList);
}
mav.addObject("contextPath", contextPath);
mav.setViewName(path);
return mav;
}
使用JSONObject解析和生成json的更多相关文章
- 运用 三种 原生 谷歌 阿里 解析和生成json
三种类生成JSON数据方法 JSON(原生): 第一种 JSONStringer和JSONObject区别在于添加对象时是按顺序添加的比如说 JSONStringer 添加 a:1 b:2 c:3那么 ...
- 使用JSONObject类来生成json格式的数据
JSONObject类不支持javabean转json 生成json格式数据的方式有: 1.使用JSONObject原生的来生成 2.使用map构建json格式的数据 3.使用javabean来构建j ...
- Json1:使用gson解析、生成json
Json解析: 1.json第三方解析包:json-lib.gson.jackson.fastjson等2.Google-gson只兼容jdk1.5版本以上:JSON-lib分别支持1.4和1.53. ...
- Android Json的使用(2) 使用Jackson解析和生成json
使用Jackson的三种方式 数据绑定模式:使用最方便 流模式:性能最佳 树模式:最灵活 以最常用的数据绑定模式为例 Json数据如下 { "name" : { "fir ...
- $Java-json系列(二):用JSONObject解析和处理json数据
本文中主要介绍JSONObject处理json数据时候的一些常用场景和方法. (一)jar包下载 所需jar包打包下载百度网盘地址:https://pan.baidu.com/s/1c27Uyre ( ...
- 用JSONObject解析和处理json数据
(一)jar包下载 所需jar包打包下载百度网盘地址:https://pan.baidu.com/s/1c27Uyre (二)常见场景及处理方法 1.解析简单的json字符串: 1 // 简单的jso ...
- 使用gson解析,生成Json
包:gson-2.3.jarJson文本解析为Java对象:Java对象生成为Json文本 import com.google.gson.Gson; public class TestGson { c ...
- Json4:使用json-lib解析、生成Json
特征:1.包多2.JSONObject.fromObject import net.sf.json.JSONObject; public class JsonLib { public static v ...
- 使用jsoncpp解析生成json
在此站点下载jsoncpp(https://sourceforge.net/projects/jsoncpp/这个站点的版本较旧) 在电脑上安装Python,运行amalgamate.py,生成的di ...
随机推荐
- LAMP搭建示例
lamp介绍 其实就是由Linux+Apache+Mysql/MariaDB+Php/Perl/Python的一组动态网站或者服务器的开源软件,除Linux外其它各部件本身都是各自独立的程序,但是因为 ...
- 入门oj 5499: 讲话模式
Description 每个人说话都有口头禅,现给出一个字符串,请求出其中出现次数最多的单词(不区分大小写). Input 输入一行,长度小于等于1048576的字符串输入至少包含一个字母或数字 Ou ...
- Atcoder abc187 F Close Group(动态规划)
Atcoder abc187 F Close Group 题目 给出一张n个点,m条边的无向图,问删除任意数量的边后,留下来的最少数量的团的个数(\(n \le 18\) ) 题解 核心:枚举状态+动 ...
- SQL操作符的优化
操作符优化 IN 操作符 用IN写出来的SQL的优点是比较容易写及清晰易懂,这比较适合现代软件开发的风格. 但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQ ...
- pthread 读写锁
pthread 读写锁 (Read Write Lock, rwlock) 把对共享资源的访问者分为读者和写者,读者仅仅对共享资源进行读访问,写者仅仅对共享资源进行写操作. 如果使用互斥量 mutex ...
- 每日CSS_滚动页面动画效果
每日CSS_滚动页面动画效果 2021_1_13 源码链接 1. 代码解析 1.1 html 代码片段 <section> <h2>开 始 滑 动</h2> < ...
- vue中选中弹出框内的表格
一:可多选情况且对应勾选 由于是弹出框形式,所以会出现新增DOM与数据的改变问题,因此要使用$nextTick,不然一开始弹出得时候DOM还没有生成,却要获取DOM会报错:这种多选情况会出现一个bug ...
- Spring Boot超详细用户管理项目(零)——开发前准备
开始前的软件准备:(编写中:未完成) 使用软件介绍: Java版本:Java SE 11(LTS) 开发工具:IDEA(2020.3版本) Linux系统: 数据库: Java 版本:Java SE ...
- 【原创】X86_64汇编、寄存器、内嵌汇编
整理的X86_64/X86汇编.寄存器.C内嵌汇编笔记,主要用于查阅使用. 目录 一.汇编语言 二.指令 数据传输指令 栈操作指令 push pop 运算指令 位操作 比较操作指令 标志寄存器 流控制 ...
- Nginx 路由转发和反向代理 location 配置
Nginx 配置的三种方式 第一种直接替换 location 匹配部分 第二种 proxy_pass 的目标地址,默认不带 /,表示只代理域名,url 和参数部分不会变(把请求的 path 拼接到 p ...