目录

  • 前言:
  • 一、JSON数据类型:
    • 1、JSON对象:
    • 2、JSON数组:
  • 二、Java对json的操作:
    • 1、构建JSON:
    • 2、JSON和对象相互转换:

前言:

什么是JSON?
1、JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation);
2、JSON 是轻量级的文本数据交换格式;
3、JSON 独立于语言 ;
4、JSON 具有自我描述性,更易理解;

JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。

一、JSON数据类型:

1、JSON对象:

JSON 对象在 “{}”中,对象中可以包含多个键值对。

2、JSON数组:

JSON 数组在中括号中书写,数组中包含多个对象。

二、Java对json的操作:

1、构建JSON:

package json;import java.util.ArrayList;
import java.util.HashMap;import net.sf.json.JSONArray;
import net.sf.json.JSONObject;public class JsonTest {public static void main(String[] args) {try {//JsonObject和JsonArray区别就是JsonObject是对象形式,JsonArray是数组形式//创建JsonObject第一种方法JSONObject jsonObject = new JSONObject();jsonObject.put("UserName", "马衍硕");jsonObject.put("age", "21");jsonObject.put("school", "SDUST");System.out.println("jsonObject1:" + jsonObject);//创建JsonObject第二种方法HashMap<String, String> hashMap = new HashMap<String, String>();hashMap.put("UserName", "李琦琦");hashMap.put("age", "21");hashMap.put("school", "SUDST");System.out.println("jsonObject2:" + JSONObject.fromObject(hashMap));//创建一个JsonArray方法1JSONArray jsonArray = new JSONArray();jsonArray.add(0, "小明");jsonArray.add(1, "22");jsonArray.add(2, "清华");System.out.println("jsonArray1:" + jsonArray);//创建JsonArray方法2ArrayList<String> arrayList = new ArrayList<String>();arrayList.add("小明");arrayList.add("22");arrayList.add("清华");System.out.println("jsonArray2:" + JSONArray.fromObject(arrayList));//如果JSONArray解析一个HashMap,则会将整个对象的放进一个数组的值中System.out.println("jsonArray FROM HASHMAP:" + JSONArray.fromObject(hashMap));//组装一个复杂的JSONArrayJSONObject jsonObject2 = new JSONObject();jsonObject2.put("UserName", "马衍硕");jsonObject2.put("age", "22");jsonObject2.put("school", "SDUST");jsonObject2.element("students", arrayList);System.out.println("jsonObject2:" + jsonObject2);System.out.println("get函数返回key(UserName)对应的value:"+jsonObject2.get("UserName"));System.out.println("get函数返回key(students)对应的value:      "+jsonObject2.get("students"));}catch(Exception e) {e.printStackTrace();}}}

运行结果:

2、JSON和对象相互转换:

(1)对象转json:
这里主要是两个方法:

/*
*JSONObject.fromObject,将类对象转换为json对象,
*JSONArray.fromObject(),将类对象转化为json数组。
*/
JSONObject.fromObject()
JSONArray.fromObject()

这里我先定义了一个类对象:

package pers.xiaoma.model;public class Student {private String name;private String age;private String school;public String getName() {return this.name;}public void setName(String str) {this.name = str;}public String getAge() {return this.age;}public void setAge(String str) {this.age = str;}public String getSchool() {return this.school;}public void setSchool(String str) {this.school = str;}public String toString() {return "Student[name="+this.name+",age="+this.age+",school"+this.school+"]";}
}

下面,将=student转换为JSON格式:

package json;import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import pers.xiaoma.model.Student;public class ObjectToJson {public static void main(String[] args) {Student student = new Student();student.setName("马衍硕");student.setAge("21");student.setSchool("SUDST");JSONObject json = JSONObject.fromObject(student);JSONArray array = JSONArray.fromObject(student);System.out.println("JsonObj: "+json);System.out.println("JsonArray: "+array);}}

程序输出为:

(2)JSON字符串转为对象:

主要的思想是,先把字符串转化为JSON对象,再将JSON对象转化为具体的类对象。
看一个例子,还是以student类为例:

package json;import net.sf.json.JSONObject;
import pers.xiaoma.model.Student;public class JsontoObj {public static void main(String[] args) {String jsonStr = "{\"age\":\"21\",\"name\":\"马衍硕\",\"school\":\"SUDST\"}";//先将字符串转化为json对象JSONObject obj = JSONObject.fromObject(jsonStr);//再将json对象转化为具体的类对象Student student = (Student)JSONObject.toBean(obj,Student.class);System.out.println("Student Name: "+student.getName());System.out.println("Student Age: "+student.getAge());System.out.println("Student School: "+student.getSchool());}}

程序运行结果:

详细代码我已上传至:https://download.csdn.net/download/mmayanshuo/10749153

Java对Json的一系列操作(构建、json与对象的转换)相关推荐

  1. python之文件操作、对.txt文本文件的操作(读、写、修改、复制、合并)、对json文本文件的操作、json字符串与字典的相互转换。

    注意:本篇所讲的文件操作,都是对后缀为.txt..json文件进行的操作. 1.json其实就是一个文件的格式,像.txt一样,json也是一个纯文本文件.与.txt不同的是,json常用来存放有键值 ...

  2. json.js+ jquery 操作笔记

    json.js+ jquery 操作笔记 json.js下载地址: http://www.json.org/js.html 我初学JSON,按照官方说明,在json2.js中有parse和string ...

  3. Python读取json文件及写入json文件等操作

    Python读取json文件及写入json文件等操作 读取json文件 写入json文件 读取json文件 load():用于读取json文件 import json with open(path,' ...

  4. java 反射 json_java 反射机制构建JSON字符串

    java 反射机制构建JSON字符串.接着上一篇文章.今天继续学习利用java 反射机制构建JSON字符串. JSON的格式跟使用的方式方法就不讲了.这个百度一下就有--好了今天心情很糟糕.直接上代码 ...

  5. 【Java】用Jackson进行JSON序列化/反序列化操作

    Java类和JSON Speaker类: import java.util.ArrayList; import java.util.Arrays; import java.util.List;publ ...

  6. Java小技巧:一个灵活的JSON构建工具

    1. 问题场景 其实,网络传输中JSON数据的构建已经有非常成熟.方便的方案,但是实际工作中难免会遇到一些不规范的特殊情况,例如: 相似的数据同一字段在不同接口具有不同意义,不同的值的范围: 同一业务 ...

  7. SpringBoot/Java 将MongoDB中的数据转换为json文件

    项目背景: 我最近在做SpringBoot的项目,其中数据库使用的是MongoDB,前端框架用的是layui.在我使用layui的数据表格组件时,其数据接口对应的是json文件,所有我得将MongoD ...

  8. cjson构建_[置顶] cJSON库(构建json与解析json字符串)-c语言

    一.c语言获取json中的数据. 1.先要有cJOSN库,两个文件分别是cJSON.c和cJSON.h. 2.感性认识 char * json = "{ \"json\" ...

  9. Go 学习笔记(20)— Go 操作 json 文件(编码生成 json、解码 json 为 map、解码 json 为 struct)

    1. Json 概述 Go 语言对于标准格式的编码和解码都有良好的支持,由标准库中的 encoding/json . encoding/xml . encoding/asn1 等包提供支持并且这类包都 ...

最新文章

  1. java 文件压缩 解压_Java文件压缩与解压缩(一)
  2. 大促下的智能运维挑战:阿里如何抗住“双11猫晚”?
  3. pop弹框 点击弹出外任意区域消失
  4. python 笔记 之 sqlalchemy操作数据库-创建表
  5. 比特币现金可能成为市值第四大最大的加密货币
  6. 两个Long类型真的不能直接用或比较么?其实可以
  7. 面试 Google, 我失败了!
  8. redis 内存不足 排查_Redis 系统学习之 redis 内存模型
  9. liunx下pytorch(python2.7)先前几个版本的安装(由于官网点击先前版本进不去)
  10. jquery中常容易出错的checkbox的获得值
  11. 基于自动图像分割算法和扩展数据集深度学习的经济作物病害识别
  12. ArcGIS 字段计算器取前几位和替换操作
  13. Objective-C中ORM的运用:实体对象和字典的相互自动转换
  14. autojs刷网课之一、刷视频篇
  15. YYUC输出联动select标签
  16. 城市综合杆道路智慧路灯多杆合一项目解决方案解析
  17. 《高性能MySQL》读书笔记(1~6章)
  18. C1能力认证训练题解析 _ 第一部分 _ 计算机通识
  19. 计算机图形学实验报告几何变换,计算机图形学实验报告几何变换.doc
  20. String相关用法记录

热门文章

  1. Linux下达梦数据库导入导出
  2. Cray推出开源大数据一体机Urika-GX
  3. netstat -lnt
  4. 谈谈巨头公司的LOGO颜色设计
  5. 网络3共享网络2计算机打印机,两台电脑如何共享打印机
  6. ipad1电池激活(长时间不用,电量过低,无法开机和充电)
  7. 一个较为完备的 antd 可视化编辑器实现
  8. Linux 启用端口
  9. 除了U盘安装电视家3.0,就没有其他能下载安装方法吗?
  10. Conflux Studio新版教程详解