Java中json使用方法
java json 合并用法

java json 合并用法Java中的JSON(JavaScript Object Notation)合并是指将多个JSON对象合并为一个单独的JSON对象。
这可以通过将JSON对象的键值对添加到目标JSON对象中来实现。
在Java中,有多种方法可以实现JSON合并。
下面介绍两种常见的方法:1. 使用Jackson库:Jackson是Java中一个广泛使用的JSON库,它提供了丰富的功能来处理JSON数据。
通过使用Jackson库的ObjectMapper类,我们可以很方便地合并JSON对象。
```ObjectMapper objectMapper = new ObjectMapper();JsonNode jsonNode1 = objectMapper.readTree(jsonString1); // 第一个JSON对象JsonNode jsonNode2 = objectMapper.readTree(jsonString2); // 第二个JSON对象ObjectNode mergedNode = objectMapper.createObjectNode(); // 创建一个空的目标JSON对象mergedNode.setAll((ObjectNode) jsonNode1); // 将第一个JSON对象的键值对添加到目标JSON对象中mergedNode.setAll((ObjectNode) jsonNode2); // 将第二个JSON对象的键值对添加到目标JSON对象中String mergedJson = objectMapper.writeValueAsString(mergedNode); // 将目标JSON对象转换为字符串System.out.println(mergedJson); // 打印合并后的JSON字符串```2. 使用org.json库:org.json是Java中另一个常用的JSON库,它提供了简单的API来处理JSON 数据。
java中json数组去重_JS中Json数据的处理和解析JSON数据的方法详解

java中json数组去重_JS中Json数据的处理和解析JSON数据的方法详解在Java中,可以使用JSON库来处理和解析JSON数据。
常用的JSON 库包括Jackson、Gson和JSON-lib等。
接下来,将详细介绍在Java中处理和解析JSON数据的方法。
一、JSON的处理1.创建JSON对象在Java中,可以通过JSONObject类来创建JSON对象。
例如:```javaJSONObject json = new JSONObject(;```2.添加属性和值可以通过put方法向JSON对象中添加属性和对应的值。
例如:```javajson.put("name", "Alice");json.put("age", 25);```3.转换为JSON字符串通过调用toString(方法,可以将JSON对象转换为JSON字符串。
例如:```javaString jsonString = json.toString(;```二、JSON的解析1.解析JSON字符串为JSON对象可以通过调用JSON库提供的解析方法,将JSON字符串解析为JSON 对象。
例如,使用Gson库:```javaString jsonString = "{\"name\":\"Alice\",\"age\":25}";Gson gson = new Gson(;JsonObject jsonObject = gson.fromJson(jsonString, JsonObject.class);```2.解析JSON对象的属性值可以通过调用JSON对象的get方法,获取对应属性的值。
例如:```javaString name = jsonObject.get("name").getAsString(;int age = jsonObject.get("age").getAsInt(;```3.解析JSON数组在JSON中,可以使用数组结构。
Java与JSON的数据交互与解析方法

Java与JSON的数据交互与解析方法随着互联网的快速发展,数据交互成为了现代软件开发中不可或缺的一部分。
在这个过程中,JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,被广泛应用于各种编程语言中。
而对于Java开发者来说,掌握Java与JSON 的数据交互与解析方法是非常重要的。
首先,我们来了解一下JSON的基本概念。
JSON是一种基于文本的数据交换格式,它由键值对组成,使用简单的语法来表示数据结构。
JSON可以表示简单的数据类型,如字符串、数字、布尔值等,也可以表示复杂的数据结构,如数组和对象。
在Java中,我们可以使用各种库和工具来进行JSON的数据交互与解析。
在Java中,常用的JSON库有Gson、Jackson和Fastjson等。
这些库提供了一系列的API和工具,使得Java与JSON之间的数据交互变得非常简单。
下面,我们将介绍一些常用的数据交互与解析方法。
首先,我们来看一下如何将Java对象转换为JSON格式的数据。
假设我们有一个名为Person的Java类,它包含了姓名、年龄和性别等属性。
我们可以使用JSON库提供的API将Person对象转换为JSON格式的数据。
以Gson库为例,我们可以使用以下代码实现:```javaPerson person = new Person("张三", 25, "男");Gson gson = new Gson();String json = gson.toJson(person);```上述代码中,我们首先创建了一个Person对象,并设置了相应的属性。
然后,我们创建了一个Gson对象,通过调用toJson方法将Person对象转换为JSON格式的字符串。
接下来,我们来看一下如何将JSON格式的数据解析为Java对象。
同样以Gson库为例,我们可以使用以下代码实现:```javaString json = "{\"name\":\"张三\",\"age\":25,\"gender\":\"男\"}";Gson gson = new Gson();Person person = gson.fromJson(json, Person.class);```上述代码中,我们首先创建了一个JSON格式的字符串,其中包含了姓名、年龄和性别等属性。
javajson序列化 parseobject方法

javajson序列化 parseobject方法Java JSON序列化简介在Java开发中,我们经常需要将对象转换成JSON格式进行传输或存储。
Java提供了多种方式来实现JSON序列化,其中最常用的方式是使用parseObject方法。
使用parseObject方法概述parseObject方法是阿里巴巴的FastJSON库提供的一种JSON序列化方法。
它可以将一个JSON字符串转换为Java对象。
示例以下是使用parseObject方法的简单示例:String jsonStr = "{\"name\":\"John\", \"age\":30}";// 将JSON字符串转换为Java对象Person person = (jsonStr, );// 输出结果(()); // 输出:John(()); // 输出:30方法参数parseObject方法有两个主要参数: 1. JSON字符串:需要转换的JSON字符串。
2. Java对象的类型:要将JSON字符串转换为哪种类型的Java对象。
支持的类型parseObject方法支持将JSON字符串转换为以下类型的Java对象: - 基本类型:如int、float、boolean等。
- 包装类型:如Integer、Float、Boolean等。
- 字符串类型:如String、StringBuilder等。
- 数组类型:如int[]、String[]等。
- 集合类型:如List、Set等。
- 自定义类型:自定义的Java类。
字符编码JSON字符串默认使用的是UTF-8字符编码。
如果需要使用其他字符编码,可以通过charset参数进行设置:String jsonStr = "{\"name\":\"John\", \"age\":30}";// 将JSON字符串转换为Java对象,使用GBK字符编码Person person = (jsonStr, , ("GBK"));其他JSON序列化方法除了parseObject方法外,还有其他几种常见的JSON序列化方式: ### toJSONString方法toJSONString方法可以将一个Java对象转换为JSON字符串。
Java使用JSONObject操作json实例解析

Java使⽤JSONObject操作json实例解析本⽂实例讲述了Java使⽤JSONObject操作json。
分享给⼤家供⼤家参考,具体如下:简介在程序开发过程中,在参数传递,函数返回值等⽅⾯,越来越多的使⽤JSON。
JSON(JavaScript Object Notation)是⼀种轻量级的数据交换格式,同时也易于机器解析和⽣成、易于理解、阅读和撰写,⽽且Json采⽤完全独⽴于语⾔的⽂本格式,这使得Json成为理想的数据交换语⾔。
JSON建构于两种结构:“名称/值”对的集合(A Collection of name/value pairs),在不同的语⾔中,它被理解为对象(Object), 记录(record), 结构(struct),字典(dictionary), 有趣列表(keyed list), 哈希表(hash table)或者关联数组(associative array)。
JSONObject依赖:最后⼀⾏需要保留,有两个jdk版本的实现:json-lib-2.1-jdk13.jar和json-lib-2.1-jdk15.jar<dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency>使⽤net.sf.json需要导⼊的jar包或者点击此处。
JSONObject创建JSONObject,添加属性//创建JSONObjectJSONObject json = new JSONObject();//添加属性json.put("username", "张三");json.put("password", "123");//打印System.out.println(json);//增加属性json.element("sex", "男");json.put("age", 18);System.out.println(json);根据key返回输出System.out.println(json.get("sex"));判断输出对象的类型boolean isArray = json.isArray();boolean isEmpty = json.isEmpty();boolean isNullObject = json.isNullObject();System.out.println("是否数组:"+isArray+", 是否空:"+isEmpty+", 是否空为空对象:"+isNullObject);把JSONArray添加到JSONObject中//开始添加json.element("student", jsonArray);System.out.println(json);全部代码:import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class Json {public static void main(String[] args) {//创建JSONObjectJSONObject json = new JSONObject();//添加属性json.put("username", "张三");json.put("password", "123");//打印System.out.println(json);//增加属性json.element("sex", "男");json.put("age", 18);System.out.println(json);//根据key返回System.out.println(json.get("sex"));//判断输出对象的类型boolean isArray = json.isArray();boolean isEmpty = json.isEmpty();boolean isNullObject = json.isNullObject();System.out.println("是否数组:"+isArray+", 是否空:"+isEmpty+", 是否空为空对象:"+isNullObject); System.out.println("=====");//把JSONArray添加到JSONObject中JSONArray jsonArray = new JSONArray();jsonArray.add(0, "张三");jsonArray.add(1, "123");//开始添加json.element("student", jsonArray);System.out.println(json);}}运⾏结果:JSONArray创建JSONArray,添加属性值jsonArray.element("男");System.根据下标返回输出System.out.println(jsonArray.get(0));根据下标设置新值,修改jsonArray.set(0, "李四");System.out.println(jsonArray);把JSONObject放⼊到JSONArray中//把JSONObject放⼊到JSONArray中JSONObject jsonObject = new JSONObject(); jsonObject.put("username", "张三"); jsonObject.put("password", "123"); jsonArray.add(jsonObject);System.全部代码:import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class Json {public static void main(String[] args) {//创建JSONArrayJSONArray jsonArray = new JSONArray();//添加jsonArray.add(0, "张三");jsonArray.add(1, "123");jsonArray.element("男");System.out.println(jsonArray);//根据下标返回输出System.out.println(jsonArray.get(0));//根据下标设置新值,修改jsonArray.set(0, "李四");System.out.println(jsonArray);//把JSONObject放⼊到JSONArray中JSONObject jsonObject = new JSONObject(); jsonObject.put("username", "张三");jsonObject.put("password", "123");jsonArray.add(jsonObject);System.out.println(jsonArray);//循环输出for(int i = 0; i < jsonArray.size(); i++) {System.out.println(jsonArray.get(i));}}}运⾏结果JavaBean与json字符串互转student类:public class Student {private String username;private String password;public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public Student(String username, String password) {super();ername = username;this.password = password;}public Student() {super();// TODO Auto-generated constructor stub}@Overridepublic String toString() {return "Student [username=" + username + ", password=" + password + "]"; }}定义对象,JavaBean对象转json字符串//定义对象Student stu = new Student("张三", "123456");//JavaBean对象转json字符串JSONObject jsonObject = JSONObject.fromObject(stu);System.out.println(jsonObject);json字符串转为javaBean//json字符串转为javaBean//定义json字符串String jsondata = "{\"username\":\"李四\", \"password\":\"123\"}";//转为json对象JSONObject json = JSONObject.fromObject(jsondata);//转为JavaBean对象Student stu2 = (Student)JSONObject.toBean(json, Student.class); System.out.println(stu2.toString());import net.sf.json.JSONObject;public class Json {public static void main(String[] args) {//定义对象Student stu = new Student("张三", "123456");//JavaBean对象转json字符串JSONObject jsonObject = JSONObject.fromObject(stu);System.out.println(jsonObject);//json字符串转为javaBean//定义json字符串String jsondata = "{\"username\":\"李四\", \"password\":\"123\"}";//转为json对象JSONObject json = JSONObject.fromObject(jsondata);//转为JavaBean对象Student stu2 = (Student)JSONObject.toBean(json, Student.class);System.out.println(stu2.toString());}}输出结果:List与json字符串互转先定义list集合,list转json字符串//定义list集合List list = new ArrayList();list.add(new Student("张三", "123"));list.add(new Student("李四", "456"));//list转json字符串JSONArray jsonArray = JSONArray.fromObject(list);System.out.println(jsonArray);json字符串转list//json字符串转listList list2 = new ArrayList();String jsondata = "[{\"password\":\"123\",\"username\":\"张三\"},{\"password\":\"456\",\"username\":\"李四\"}]"; JSONArray jsonArray1 = JSONArray.fromObject(jsondata);for(int i = 0; i < jsonArray1.size(); i++) {JSONObject jsonObject2 = jsonArray1.getJSONObject(i);Student stu2 = (Student)JSONObject.toBean(jsonObject2, Student.class);list2.add(stu2);}System.out.println(list2);全部代码import java.util.ArrayList;import java.util.List;import net.sf.json.JSONArray;import net.sf.json.JSONObject;public class Json {public static void main(String[] args) {//定义list集合//list转json字符串JSONArray jsonArray = JSONArray.fromObject(list);System.out.println(jsonArray);//json字符串转listList list2 = new ArrayList();String jsondata = "[{\"password\":\"123\",\"username\":\"张三\"},{\"password\":\"456\",\"username\":\"李四\"}]";JSONArray jsonArray1 = JSONArray.fromObject(jsondata);for(int i = 0; i < jsonArray1.size(); i++) {JSONObject jsonObject2 = jsonArray1.getJSONObject(i);Student stu2 = (Student)JSONObject.toBean(jsonObject2, Student.class);list2.add(stu2);}System.out.println(list2);}}运⾏结果Map与json字符串互转定义map集合,Map转json字符串//定义map集合Map map = new HashMap();map.put("1", new Student("张三", "123"));map.put("2", new Student("李四", "456"));//Map转json字符串JSONObject jsonMap = JSONObject.fromObject(map);System.out.println(jsonMap);定义字符串map集合,map集合字符串转为map//定义字符串map集合String jsondata = "{\"1\":{\"password\":\"123\",\"username\":\"张三\"},\"2\":{\"password\":\"456\",\"username\":\"李四\"}}"; //map集合字符串转为mapMap map2 = (Map)JSONObject.fromObject(jsondata);Set set = map2.keySet();//定义迭代器,迭代输出Iterator ite = set.iterator();while(ite.hasNext()) {//取出⼀个字符串对象String key = (String)ite.next();//转为json格式JSONObject jsonObject = JSONObject.fromObject(map2.get(key));//转为对象Student stu = (Student)JSONObject.toBean(jsonObject, Student.class);System.out.println(key+" "+stu);}全部代码import java.util.HashMap;import java.util.Iterator;import java.util.Map;import java.util.Set;Map map = new HashMap();map.put("1", new Student("张三", "123"));map.put("2", new Student("李四", "456"));//Map转json字符串JSONObject jsonMap = JSONObject.fromObject(map);System.out.println(jsonMap);//定义字符串map集合String jsondata = "{\"1\":{\"password\":\"123\",\"username\":\"张三\"},\"2\":{\"password\":\"456\",\"username\":\"李四\"}}"; //map集合字符串转为mapMap map2 = (Map)JSONObject.fromObject(jsondata);Set set = map2.keySet();//定义迭代器,迭代输出Iterator ite = set.iterator();while(ite.hasNext()) {//取出⼀个字符串对象String key = (String)ite.next();//转为json格式JSONObject jsonObject = JSONObject.fromObject(map2.get(key));//转为对象Student stu = (Student)JSONObject.toBean(jsonObject, Student.class);System.out.println(key+" "+stu);}}}运⾏结果JSONArray与List互转定义list集合,List转型JSONArray//定义list集合List<Student> list = new ArrayList<Student>();list.add(new Student("张三", "123"));list.add(new Student("李四", "456"));//List转型JSONArrayJSONArray jsonArray = JSONArray.fromObject(list);System.out.println(jsonArray.toString());JSONArray转型List,JSONArray是⽤的上⾯的那个jsonArray变量//JSONArray转型ListList<Student> list2 = JSONArray.toList(jsonArray, new Student(), new JsonConfig());Iterator<Student> ite = list2.iterator();while(ite.hasNext()) {Student stu = ite.next();System.out.println(stu);}全部代码import java.util.ArrayList;import java.util.Iterator;import java.util.List;import net.sf.json.JSONArray;List<Student> list = new ArrayList<Student>();list.add(new Student("张三", "123"));list.add(new Student("李四", "456"));//List转型JSONArrayJSONArray jsonArray = JSONArray.fromObject(list);System.out.println(jsonArray.toString());//JSONArray转型ListList<Student> list2 = JSONArray.toList(jsonArray, new Student(), new JsonConfig()); Iterator<Student> ite = list2.iterator();while(ite.hasNext()) {Student stu = ite.next();System.out.println(stu);}}}运⾏结果JSONArray与数组互转定义数组,数组转JSONArray//定义数组boolean[] boolArray = {true, false, true};//java数组转JSONArrayJSONArray jsonArray = JSONArray.fromObject(boolArray);System.out.println(jsonArray.toString());JSONArray转java数组//JSONArray转java数组Object obj[] = jsonArray.toArray();for(Object o : obj) {System.out.print(o+"\t");}全部代码import net.sf.json.JSONArray;public class Json {public static void main(String[] args) {//定义数组boolean[] boolArray = {true, false, true};//java数组转JSONArrayJSONArray jsonArray = JSONArray.fromObject(boolArray);System.out.println(jsonArray.toString());//JSONArray转java数组Object obj[] = jsonArray.toArray();for(Object o : obj) {System.out.print(o+"\t");}}}PS:关于json操作,这⾥再为⼤家推荐⼏款⽐较实⽤的json在线⼯具供⼤家参考使⽤:更多关于java相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》希望本⽂所述对⼤家java程序设计有所帮助。
javatojson用法

javatojson用法JavaToJSON是一种常用的将Java对象转换为JSON格式的方法,它可以帮助我们将Java对象转换为易于阅读和使用的JSON字符串。
本文将介绍JavaToJSON的用法、常见问题和注意事项。
JavaToJSON是一种将Java对象转换为JSON格式的工具,它可以将Java对象序列化为JSON字符串,以便于存储、传输和展示。
它支持多种数据类型,包括基本数据类型、对象、数组等。
1.引入相关依赖在使用JavaToJSON之前,需要将其添加到项目的依赖中。
可以通过Maven或Gradle等构建工具来添加依赖。
2.创建Java对象首先需要创建一个Java对象,该对象需要实现一个特定的接口或类,以便于将其转换为JSON格式。
3.使用JavaToJSON转换对象使用JavaToJSON可以将Java对象转换为JSON格式的字符串。
可以使用以下代码来实现:StringjsonString=JsonUtil.toJson(javaObject);其中,javaObject是要转换的Java对象,jsonString是转换后的JSON字符串。
4.解析JSON字符串为Java对象使用JavaToJSON可以将JSON字符串转换为Java对象。
可以使用以下代码来实现:JavaObjectjavaObject=JsonUtil.fromJson(jsonString,JavaObj ect.class);其中,jsonString是要解析的JSON字符串,JavaObject是转换后的Java对象类型。
三、常见问题及解答Q:如何将集合类型转换为JSON?A:JavaToJSON支持将集合类型转换为JSON数组。
可以将集合类型封装为List或Array等Java集合类型,然后将其传递给JavaToJSON进行转换。
Q:如何处理嵌套的对象或数组?A:JavaToJSON支持处理嵌套的对象或数组。
java中jsonobject的用法

java中jsonobject的用法Java中的JSONObject是一个用于处理JSON数据的类。
JSON(JavaScript Object Notation)是一种用于数据交换的轻量级数据格式,常用于网络传输和存储数据。
通过JSONObject类,我们可以方便地解析和操作JSON数据。
一、导入JSONObject类首先,我们需要导入JSON库中的JSONObject类,即在代码的头部添加以下语句:import org.json.JSONObject;这样,我们就可以在代码中使用JSONObject类了。
二、创建JSONObject对象在Java中,可以通过以下两种方式来创建JSONObject对象:1. 使用字符串创建JSONObject对象可以通过将一个JSON格式的字符串传递给JSONObject类的构造函数,来创建一个JSONObject对象。
例如:String jsonString = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";JSONObject jsonObject = new JSONObject(jsonString);上述代码将创建一个名为jsonObject的JSONObject对象,该对象包含了名为name、age和city的三个属性,对应的值分别为John、30和New York。
2. 使用键值对创建JSONObject对象可以通过逐个添加键值对的方式,来创建一个JSONObject对象。
例如:JSONObject jsonObject = new JSONObject();jsonObject.put("name", "John");jsonObject.put("age", 30);jsonObject.put("city", "New York");上述代码将创建一个名为jsonObject的JSONObject对象,该对象包含了名为name、age和city的三个属性,对应的值分别为John、30和New York。
java jsonarray用法

java jsonarray用法Java的JSONArray类是用于创建和操作JSON数组的工具类。
JSONArray类提供了以下常用方法:- `add(Object value)`:向JSON数组添加一个元素。
- `get(int index)`:获取JSON数组中指定索引位置的元素。
- `length()`:获取JSON数组的长度。
- `put(int index, Object value)`:在指定索引位置插入一个元素。
- `remove(int index)`:删除指定索引位置的元素。
- `toString()`:将JSON数组转换为字符串。
以下是一个例子,展示如何使用JSONArray类创建和操作JSON数组:```javaimport org.json.JSONArray;import org.json.JSONException;public class JSONArrayExample {public static void main(String[] args) {try {// 创建一个空的JSON数组JSONArray jsonArray = new JSONArray();// 向JSON数组添加元素jsonArray.add("apple");jsonArray.add("banana");jsonArray.add("orange");// 获取JSON数组的长度int length = jsonArray.length();System.out.println("JSON数组的长度:" + length);// 获取JSON数组中指定索引位置的元素String fruit = jsonArray.getString(1);System.out.println("第2个元素:" + fruit);// 在指定索引位置插入一个元素jsonArray.put(1, "grape");System.out.println("插入后的JSON数组:" + jsonArray.toString()); // 删除指定索引位置的元素jsonArray.remove(2);System.out.println("删除后的JSON数组:" + jsonArray.toString()); } catch (JSONException e) {e.printStackTrace();}}}运行结果:JSON数组的长度:3第2个元素:banana插入后的JSON数组:["apple","grape","banana","orange"]删除后的JSON数组:["apple","grape","orange"]。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java中json使用方法
摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。
它基于ECMAScript的一个子集。
JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python 等)。
这些特性使JSON成为理想的数据交换语言。
易于人阅读和编写,同时也易于机器解析和生成(网络传输速率)。
一、准备工作
json是个非常重要的数据结构,在web开发中应用十分广泛。
我觉得每个人都应该好好的去研究一下json的底层实现,分析一下json的相关内容,希望大家能有所收获。
首先给大家说一下使用json前的准备工作,需要准备下面的六个jar 包:
需要说明几点:
(1)json-lib最新版本可以从这个地方下载:/projects/json-lib/files/json-lib/
(2)ezmorph是一个简单的java类库,用于将一种bean转换成另外一种bean。
其动态bean的实现依赖于commons-beanutils包。
ezmorph可以在这个地方下载源码:/projects/ezmorph/files/ezmorph/ (3)commons-beanutils是操作Java Bean的类库,依赖于commons-collections。
可以从这里下载:/proper/commons-beanutils/download_beanutils.cgi
(4)commons-collections类库是各种集合类和集合工具类的封装。
可以从这里下载:
/proper/commons-collections/download_collections.cgi
二、语法相关
JSON 语法规则
JSON 语法是JavaScript 对象表示法语法的子集。
数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
∙JSON 值
JSON 值可以是:
数字(整数或浮点数)
字符串(在双引号中)
逻辑值(true 或false)
数组(在方括号中)
对象(在花括号中)
null
∙JSON有两种表示结构
对象和数组。
对象结构以”{”大括号开始,以”}”大括号结束。
中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码。
如
其中关键字是字符串,而值可以是字符串,数值,true,false,null,对象或数组
数组结构以”[”开始,”]”结束。
中间由0或多个以”,”分隔的值列表组成,语法结构如代码。
如:
三、Java中使用Json基本使用方法整个工程目录如下:
Employer.java如下
JsonTest.java全部代码如下:
下面分别对各个部分来进行说明1. Bean转换成json代码
运行结果如下:
2. 数组转换成json代码
运行结果如下:
3. List集合转换成json方法
运行结果如下:
4. Map集合转换成json方法
运行结果如下:
四、JSONObject的过滤设置
通常对一个json串和java对象进行互转时,经常会有选择性的过滤掉一些属性值。
例如下面的类:
如果我想过滤age属性怎么办?方法一:实现JSONString接口
方法二:设置jsonconfig实例,对包含和需要排除的属性进行添加或删除。
方法三:使用propertyFilter实例过滤属性
五、JavaScript中使用JSON
JSON 最常见的用法之一,是从web 服务器上读取JSON 数据(作为文件或作为HttpRequest),将JSON 数据转换为JavaScript 对象,然后在网页中使用该数据。
之前我一直有个困惑,分不清普通字符串
1、json字符串和json对象的区别。
字符串:这个很好解释,指使用“”双引号或’’单引号包括的字符。
例如:var comStr = 'this is string';
json字符串:指的是符合json格式要求的js字符串。
例如:var jsonStr = "{StudentID:'100',Name:'tmac',Hometown:'usa'}"; json对象:指符合json格式要求的js对象。
例如:var jsonObj = { StudentID: "100", Name: "tmac", Hometown: "usa" };
2、JSON 实例- 来自字符串的对象
创建包含JSON 语法的JavaScript 字符串:
由于JSON 语法是JavaScript 语法的子集,JavaScript 函数eval() 可用于将JSON 文本转换为JavaScript 对象。
eval() 函数使用的是JavaScript 编译器,可解析JSON 文本,然后生成JavaScript 对象。
必须把文本包围在括号中,这样才能避免语法错误:
如下格式:
输出结果:
不过eval解析json有安全隐患!现在大多数浏览器(IE8及以上,Chrome和Firefox差不多全部)自带原生JSON对象,提供JSON.parse()方法解析JSON,提供JSON.stringify()方法生成JSON,请使用这两个方法!
如果担心parse()对对象抛异常,可以加一个封装函数:
1、从JSON中读数据
2、增加JSON中的数据
3、更新JSON中的数据
function Update() {
obj.count = 10; //或obj["count"]=10 }
4、删除JSON中的数据
5、遍历JSON中的数据
六、XML与JSON对比
∙XML定义
扩展标记语言(Extensible Markup Language, XML),用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。
XML使用DTD(document type definition)文档类型定义来组织数据;?格式统一,跨平台和语言,早已成为业界公认的标准。
XML是标准通用标记语言(SGML) 的子集,非常适合Web 传输。
XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。
∙JSON定义
JSON(JavaScript Object Notation)一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。
可在不同平台之间进行数据交换。
JSON采用兼容性很高的、完全独立于语言文本格式,同时也具备类似于C语言的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)体系的行为。
这些特性使JSON成为理想的数据交换语言。
JSON基于JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999的一个子集。
∙XML和JSON优缺点
(1).XML的优缺点
<1>.XML的优点
A.格式统一,符合标准;
B.容易与其他系统进行远程交互,数据共享比较方便。
<2>.XML的缺点
A.XML文件庞大,文件格式复杂,传输占带宽;
B.服务器端和客户端都需要花费大量代码来解析XML,导致服务器端和客户端代码变得异常复杂且不易维护;
C.客户端不同浏览器之间解析XML的方式不一致,需要重复编写很多代码;
D.服务器端和客户端解析XML花费较多的资源和时间。
∙JSON的优缺点
<1>.JSON的优点:
A.数据格式比较简单,易于读写,格式都是压缩的,占用带宽小;
B.易于解析,客户端JavaScript可以简单的通过eval()进行JSON 数据的读取;
C.支持多种语言,包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等服务器端语言,便于服务器端的解析;
D.在PHP世界,已经有PHP-JSON和JSON-PHP出现了,偏于PHP序列化后的程序直接调用,PHP
服务器端的对象、数组等能直接生成JSON格式,便于客户端的访问提取;E.因为JSON格式能直接为服务器端代码使用,大大简化了服务器端和客户端的代码开发量,且完成任务不变,并且易于维护。
<2>.JSON的缺点
A.没有XML格式这么推广的深入人心和喜用广泛,没有XML那么通用性;
B.JSON格式目前在Web Service中推广还属于初级阶段。
本文作者:evankaka。