- 浏览: 23066 次
- 性别:
- 来自: 北京
最新评论
JSON解析类可以分为以下几个类
JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。它对外部(External: 应用toString()方法输出的数值)调用的响应体现为一个标准的字符串(例如:{"JSON": "Hello, World"},最外被大括号包裹,其中的Key和Value被冒号":"分隔)。其对于内部(Internal)行为的操作格式略微,例如:初始化一个JSONObject实例,引用内部的put()方法添加数值:new JSONObject().put("JSON", "Hello, World!"),在Key和Value之间是以逗号","分隔。Value的类型包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object 。
JSONStringer:json文本构建类 ,根据官方的解释,这个类可以帮助快速和便捷的创建JSON text。其最大的优点在于可以减少由于 格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个 JSONStringer实体只能对应创建一个JSON text。。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。
JSONArray:它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如: [value1,value2,value3],大家可以亲自利用简短的代码更加直观的了解其格式)。这个类的内部同样具有查询行为, get()和opt()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。同样这个类的value类型可以包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。
JSONTokener:json解析类
JSONException:json中用到的异常
一、构建json
首先 我们来构建一个下面的简单的json
/**
* 生成json
* */
public String createJson() {
// TODO Auto-generated method stub
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", "1");
jsonObject.put("name", "李磊");
jsonObject.put("age", "30");
return jsonObject.toString();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
得到的json数据为:{"id":"1","name":"李磊","age":"30"}
这应该算是最简单的一个json数据
实现的流程就是新建一个jsonobject对象,通过put将属性添加到json
接下来 我们来创建一个带有数组的json数据
/**
* 生成json
* */
public String createJson() {
// TODO Auto-generated method stub
List<Person> persons = getTestValues();
try {
JSONObject jsonObject = new JSONObject();
JSONArray array = new JSONArray();
for (int i = 0; i < persons.size(); i++) {
JSONObject person = new JSONObject();
Person p = persons.get(i);
person.put("id", p.getId());
person.put("name", p.getName());
person.put("age", p.getAge());
array.put(person);
}
jsonObject.put("persons", array);
System.out.println(jsonObject.toString());
return jsonObject.toString();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
上面的代码 我们得到的是这样的数据
{"persons":[{"id":"1","age":"30","name":"李磊"},{"id":"2","age":"25","name":"韩梅梅"}]}
看了代码之后就会发现 代码很容易理解
1.创建最外层的{}对象jsonObject
2.创建数组对象 用来保存两个人的信息
3.在循环内创建jsonObject对象 用来保存每个人的信息,别忘了添加完属性之后 将对象添加到数组
4.将数组添加到最外层对象
我们除了使用jsonObject和jsonArray来创建json之外 我们还可以使用JSONStringer
/**
* 生成json
* */
public String createJson() {
// TODO Auto-generated method stub
JSONStringer jsonStringer = new JSONStringer();
try {
jsonStringer.object();
jsonStringer.key("id").value("1");
jsonStringer.key("name").value("李磊");
jsonStringer.key("age").value("30");
jsonStringer.endObject();
System.out.println(jsonStringer.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonStringer.toString();
}
上面的代码 我们得到了这样的数据{"id":"1","name":"李磊","age":"30"}
和第一次获取的一块 接下来 我们讲下大概
1. 首先 新建JSONStringer对象
2. 调用object()方法 说明开始创建 添加了头{(当然,要和endobject成对出现)
3. 添加一个属性 通过key("name") 添加了属性了名称 通过value("value") 添加了属性的值
4. 添加完所有内容之后,调用endobject()方法通知json创建完毕
好了 接下来我们使用JSONStringer创建一个带有数组的json数据
/**
* 生成json
* */
public String createJson() {
// TODO Auto-generated method stub
List<Person> persons = getTestValues();
JSONStringer jsonStringer = new JSONStringer();
try {
jsonStringer.object();
jsonStringer.key("persons");
jsonStringer.array();
for (int i = 0; i < persons.size(); i++) {
Person person = persons.get(i);
jsonStringer.object();
jsonStringer.key("id").value(person.getId());
jsonStringer.key("name").value(person.getName());
jsonStringer.key("age").value(person.getAge());
jsonStringer.endObject();
}
jsonStringer.endArray();
jsonStringer.endObject();
System.out.println(jsonStringer.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonStringer.toString();
}
看下生成的字符串
{"persons":[{"id":"1","name":"李磊","age":"30"},{"id":"2","name":"韩梅梅","age":"25"}]}
是我们需要的数据
1.创建一个新的JSONStringer对象 用来存储生成的json数据
2.首先调用key("persons") 添加数组的key值
3.调用array()通知系统 接下来的是一个数组 (和endarray()一起出现)
4.在循环内部通过object()方法 创建一对{} 然后将属性添加到大括号内
上面的代码我们讲了怎么去生成json数据
二、解析JSON
接下来我们来解析一个最简单的json数据 数据为{"id":"1","name":"李磊","age":"30"}
我们来看下解析的代码
/**
* 解析json
* */
public Person parserJson() {
// TODO Auto-generated method stub
String json = "{\"id\":\"1\",\"name\":\"李磊\",\"age\":\"30\"}";
Person person = new Person();
try {
JSONTokener jsonTokener = new JSONTokener(json);
// 此时还未读取任何json文本,直接读取就是一个JSONObject对象。
// 如果此时的读取位置在"name" : 了,那么nextValue就是"李磊"(String)
JSONObject jsonObject = (JSONObject) jsonTokener.nextValue();
person.setId(jsonObject.getString("id"));
person.setName(jsonObject.getString("name"));
person.setAge(jsonObject.getString("age"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return person;
}
我们解析的步骤
1.将json字符串转换为jsonTokener对象
2.调用jsonTokener的nextValue()方法 将json数据转换为jsonObject对象
3.通过getString(keyname)获取需要的值
当然 nextValue()获取的不一定是jsonObject对象,详细解释看代码注释
接下来 我们要来解析这样的数据,带有数组哦~
{"persons":[{"id":"1","name":"李磊","age":"30"},{"id":"2","name":"韩梅梅","age":"25"}]}
不难 上代码
public List<Person> parserJson() {
// TODO Auto-generated method stub
String json = "{\"persons\":[{\"id\":\"1\",\"name\":\"李磊\",\"age\":\"30\"},{\"id\":\"2\",\"name\":\"韩梅梅\",\"age\":\"25\"}]}";
List<Person> persons = new ArrayList<Person>();
try {
JSONTokener jsonTokener = new JSONTokener(json);
// 此时还未读取任何json文本,直接读取就是一个JSONObject对象。
// 如果此时的读取位置在"name" : 了,那么nextValue就是"李磊"(String)
JSONObject jsonObject = (JSONObject) jsonTokener.nextValue();
JSONArray array = jsonObject.getJSONArray("persons");
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);
Person person = new Person();
person.setId(object.getString("id"));
person.setName(object.getString("name"));
person.setAge(object.getString("age"));
persons.add(person);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return persons;
}
同样的 我们来解释下代码
1.创建一个list 用来存储解析的信息
2.将json字符串转换为jsonTokener对象,再转换为jsonObject对象
3.通过getJSONArray("persons")获取json数组
4.通过循环来解析json数组,解析的内容不解释,上面已经说过
JSONObject:可以看作是一个json对象,这是系统中有关JSON定义的基本单元,其包含一对儿(Key/Value)数值。它对外部(External: 应用toString()方法输出的数值)调用的响应体现为一个标准的字符串(例如:{"JSON": "Hello, World"},最外被大括号包裹,其中的Key和Value被冒号":"分隔)。其对于内部(Internal)行为的操作格式略微,例如:初始化一个JSONObject实例,引用内部的put()方法添加数值:new JSONObject().put("JSON", "Hello, World!"),在Key和Value之间是以逗号","分隔。Value的类型包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object 。
JSONStringer:json文本构建类 ,根据官方的解释,这个类可以帮助快速和便捷的创建JSON text。其最大的优点在于可以减少由于 格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个 JSONStringer实体只能对应创建一个JSON text。。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntax rules)创建JSON text。每个JSONStringer实体只能对应创建一个JSON text。
JSONArray:它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如: [value1,value2,value3],大家可以亲自利用简短的代码更加直观的了解其格式)。这个类的内部同样具有查询行为, get()和opt()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。同样这个类的value类型可以包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。
JSONTokener:json解析类
JSONException:json中用到的异常
一、构建json
首先 我们来构建一个下面的简单的json
/**
* 生成json
* */
public String createJson() {
// TODO Auto-generated method stub
try {
JSONObject jsonObject = new JSONObject();
jsonObject.put("id", "1");
jsonObject.put("name", "李磊");
jsonObject.put("age", "30");
return jsonObject.toString();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
得到的json数据为:{"id":"1","name":"李磊","age":"30"}
这应该算是最简单的一个json数据
实现的流程就是新建一个jsonobject对象,通过put将属性添加到json
接下来 我们来创建一个带有数组的json数据
/**
* 生成json
* */
public String createJson() {
// TODO Auto-generated method stub
List<Person> persons = getTestValues();
try {
JSONObject jsonObject = new JSONObject();
JSONArray array = new JSONArray();
for (int i = 0; i < persons.size(); i++) {
JSONObject person = new JSONObject();
Person p = persons.get(i);
person.put("id", p.getId());
person.put("name", p.getName());
person.put("age", p.getAge());
array.put(person);
}
jsonObject.put("persons", array);
System.out.println(jsonObject.toString());
return jsonObject.toString();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "";
}
上面的代码 我们得到的是这样的数据
{"persons":[{"id":"1","age":"30","name":"李磊"},{"id":"2","age":"25","name":"韩梅梅"}]}
看了代码之后就会发现 代码很容易理解
1.创建最外层的{}对象jsonObject
2.创建数组对象 用来保存两个人的信息
3.在循环内创建jsonObject对象 用来保存每个人的信息,别忘了添加完属性之后 将对象添加到数组
4.将数组添加到最外层对象
我们除了使用jsonObject和jsonArray来创建json之外 我们还可以使用JSONStringer
/**
* 生成json
* */
public String createJson() {
// TODO Auto-generated method stub
JSONStringer jsonStringer = new JSONStringer();
try {
jsonStringer.object();
jsonStringer.key("id").value("1");
jsonStringer.key("name").value("李磊");
jsonStringer.key("age").value("30");
jsonStringer.endObject();
System.out.println(jsonStringer.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonStringer.toString();
}
上面的代码 我们得到了这样的数据{"id":"1","name":"李磊","age":"30"}
和第一次获取的一块 接下来 我们讲下大概
1. 首先 新建JSONStringer对象
2. 调用object()方法 说明开始创建 添加了头{(当然,要和endobject成对出现)
3. 添加一个属性 通过key("name") 添加了属性了名称 通过value("value") 添加了属性的值
4. 添加完所有内容之后,调用endobject()方法通知json创建完毕
好了 接下来我们使用JSONStringer创建一个带有数组的json数据
/**
* 生成json
* */
public String createJson() {
// TODO Auto-generated method stub
List<Person> persons = getTestValues();
JSONStringer jsonStringer = new JSONStringer();
try {
jsonStringer.object();
jsonStringer.key("persons");
jsonStringer.array();
for (int i = 0; i < persons.size(); i++) {
Person person = persons.get(i);
jsonStringer.object();
jsonStringer.key("id").value(person.getId());
jsonStringer.key("name").value(person.getName());
jsonStringer.key("age").value(person.getAge());
jsonStringer.endObject();
}
jsonStringer.endArray();
jsonStringer.endObject();
System.out.println(jsonStringer.toString());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return jsonStringer.toString();
}
看下生成的字符串
{"persons":[{"id":"1","name":"李磊","age":"30"},{"id":"2","name":"韩梅梅","age":"25"}]}
是我们需要的数据
1.创建一个新的JSONStringer对象 用来存储生成的json数据
2.首先调用key("persons") 添加数组的key值
3.调用array()通知系统 接下来的是一个数组 (和endarray()一起出现)
4.在循环内部通过object()方法 创建一对{} 然后将属性添加到大括号内
上面的代码我们讲了怎么去生成json数据
二、解析JSON
接下来我们来解析一个最简单的json数据 数据为{"id":"1","name":"李磊","age":"30"}
我们来看下解析的代码
/**
* 解析json
* */
public Person parserJson() {
// TODO Auto-generated method stub
String json = "{\"id\":\"1\",\"name\":\"李磊\",\"age\":\"30\"}";
Person person = new Person();
try {
JSONTokener jsonTokener = new JSONTokener(json);
// 此时还未读取任何json文本,直接读取就是一个JSONObject对象。
// 如果此时的读取位置在"name" : 了,那么nextValue就是"李磊"(String)
JSONObject jsonObject = (JSONObject) jsonTokener.nextValue();
person.setId(jsonObject.getString("id"));
person.setName(jsonObject.getString("name"));
person.setAge(jsonObject.getString("age"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return person;
}
我们解析的步骤
1.将json字符串转换为jsonTokener对象
2.调用jsonTokener的nextValue()方法 将json数据转换为jsonObject对象
3.通过getString(keyname)获取需要的值
当然 nextValue()获取的不一定是jsonObject对象,详细解释看代码注释
接下来 我们要来解析这样的数据,带有数组哦~
{"persons":[{"id":"1","name":"李磊","age":"30"},{"id":"2","name":"韩梅梅","age":"25"}]}
不难 上代码
public List<Person> parserJson() {
// TODO Auto-generated method stub
String json = "{\"persons\":[{\"id\":\"1\",\"name\":\"李磊\",\"age\":\"30\"},{\"id\":\"2\",\"name\":\"韩梅梅\",\"age\":\"25\"}]}";
List<Person> persons = new ArrayList<Person>();
try {
JSONTokener jsonTokener = new JSONTokener(json);
// 此时还未读取任何json文本,直接读取就是一个JSONObject对象。
// 如果此时的读取位置在"name" : 了,那么nextValue就是"李磊"(String)
JSONObject jsonObject = (JSONObject) jsonTokener.nextValue();
JSONArray array = jsonObject.getJSONArray("persons");
for (int i = 0; i < array.length(); i++) {
JSONObject object = array.getJSONObject(i);
Person person = new Person();
person.setId(object.getString("id"));
person.setName(object.getString("name"));
person.setAge(object.getString("age"));
persons.add(person);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return persons;
}
同样的 我们来解释下代码
1.创建一个list 用来存储解析的信息
2.将json字符串转换为jsonTokener对象,再转换为jsonObject对象
3.通过getJSONArray("persons")获取json数组
4.通过循环来解析json数组,解析的内容不解释,上面已经说过
发表评论
-
Myeclipse激活教程(windows&linux)
2014-03-03 14:42 0Myeclipse激活教程(windows&linux ... -
JAVA学习路线图
2014-03-03 14:40 0第一阶段-Java基础 ... -
java.util.Date和java.sql.Date的区别及应用
2014-03-03 14:36 556java.util.Date 就是在除了SQL语句的情况下面使 ... -
Java程序员面试中的多线程问题
2014-03-03 14:25 695很多核心Java面试题来源于多线程(Multi-Threadi ... -
如何从Oracle公司官网下载java7 API文档
2014-03-03 14:19 17151、首先打开官网: http://www.oracle.com ... -
java 4中代码块执行顺序
2014-03-03 14:04 587public class FF extends DD { ... -
java 代码块分类说明
2014-03-03 13:42 429一、普通代码块 直 ... -
String转变Date
2014-02-27 18:42 512import java.text.DateFormat; im ... -
Java正则表达式大全
2014-02-26 08:50 955[正则表达式]文本框输入内容控制 整数或者小数:^[0-9]+ ... -
java多线程总结
2014-01-16 11:38 957在java中要想实现多线程 ... -
Java中观察者模式的使用
2014-01-11 14:37 606在一对多依赖的对象关系中, 如果这个'一'对象状态发生了 ... -
java 中枚举类型,整型,字符串之间转换
2014-01-08 20:31 507enum<->int enum -> int ... -
JSON解析工具-json-lib
2014-01-08 09:31 570一、简介 json-lib是一个Java类库,提供将Java ...
相关推荐
3. **使用dumps()创建JSON字符串** 假设我们有一个名为`Person`的类,其中包含姓名、年龄和城市属性。我们可以创建一个`Person`对象,然后使用`dumps()`方法将其转换为JSON字符串。 ```python import json ...
在本教程中,我们将深入探讨如何创建JSON以及相关的解析技术。 1. JSON的基本结构: JSON数据以键值对的形式存在,类似于JavaScript的对象。键用引号包围,然后是冒号,冒号后面是对应的值。值可以是字符串、数字...
java代码-使用java解决创建json文件的源代码 ——学习参考资料:仅用于个人学习使用!
在本文中,我们将深入探讨一个名为"jsongo"的库,这是一个针对Go语言设计的Fluent API,它使创建JSON对象变得更加直观和方便。通过使用`jsongo`,开发者可以更高效地构建复杂的JSON结构,而无需直接操作字符串或映射...
### JSON法创建对象详解 ...通过创建JSON对象,开发者可以有效地管理和操作复杂的数据结构,为用户提供更丰富、更动态的Web体验。无论是处理简单的数据,还是复杂的多层数据结构,JSON都是一个值得信赖的选择。
`gjo`是一个小型的Go库,专门设计用于创建JSON对象,提供了一种简单的方法来构建和操作JSON结构,尤其适合那些希望避免繁琐的JSON编码和解码过程的开发者。 `gjo`库的核心理念是提供一种简洁的API,使得创建JSON...
Ruby中的Jbuilder库就是为了方便开发者创建JSON结构而设计的。 Jbuilder是一个Ruby gem,它提供了一个简洁的Domain Specific Language (DSL),让开发者能够通过一种构造式的语法来构建复杂的JSON对象,避免了手动...
1. **创建JSON对象**:要生成JSON,首先创建一个`TSuperObject`,并设置其类型。例如,创建一个对象: ```delphi var JSONObj: ISuperObject; begin JSONObj := TSuperObject.Create(ST_OBJECT); ``` 或创建一个...
这将在之前创建的JSON对象中添加一个名为"students"的键,其值为之前创建的JSON数组。 4. 将JSON数据转换为字符串: ```java String jsonString = jsonObject.toString(); ``` `toString()`方法会将JSON对象转换为...
此外,为了将MFC应用的内部数据结构序列化为JSON,你可以创建相应的函数,将对象的属性映射到json11对象,然后调用`Json::dump`。 在实际项目中,你可能还需要处理JSON解析的错误情况,比如使用`Json::parse`时可能...
导入这些库后,开发者可以通过API来创建JSON对象、解析JSON字符串、遍历JSON结构、修改JSON内容等。例如,使用Jackson库,你可以这样做: ```java import com.fasterxml.jackson.databind.ObjectMapper; public ...
本次我们关注的是一个特定的主题——如何在易语言中生成二维JSON数组的源码。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁明了的结构,广泛应用于数据传输和存储。 二维JSON数组,简单...
在Java中,处理JSON对象通常涉及到创建JSON对象和解析JSON字符串。接下来,我们将深入探讨这两个关键知识点。 **一、创建JSON对象** 在Java中,我们主要使用两个流行的库来处理JSON:`org.json` 和 `...
"易语言生成二维json数组源码"是一个具体的编程任务,其目标是编写易语言代码,能够创建并输出一个二维的JSON数组。在易语言中,这可能涉及到以下几个关键步骤: 1. **数据结构定义**:首先,需要定义二维数组的...
通过 JSON 字符串来创建对象 First Name: <span id=fname></span> Last Name: <span id=lname></span> [removed] //txt为字符串 var txt = '{employees:[' + '{firstName:Bill,lastName:Gates },' + '{...
描述中提到,“LabVIEW建立JSON通讯示例,通过建立簇,将数据转换成JSON格式”,这暗示了该示例将指导用户如何使用LabVIEW的内置功能或自定义VI(Virtual Instrument)来创建JSON数据。在LabVIEW中,簇类似于结构化...
4. **JSON解析与生成**:库提供API来解析JSON文本,创建JSON对象和数组,并生成对应的JSON字符串。例如,`JSONObject`和`JSONArray`类是两个常用的类,分别代表JSON对象和数组。 5. **JSON路径支持**:一些JSON库还...
jsonedit 命令行(终端)工具,用于编辑/创建JSON文件$ npm install --global jsonedit $ jsonedit test.jsonkey> namevalue> jsoneditkey> versionvalue> 0.0.1key> (type enter to break)为什么? 由于手动编写...
要使用`json-c`库,开发者首先需要将其编译并链接到自己的C项目中,然后就可以调用提供的API来解析JSON字符串,创建JSON对象,或者将JSON对象转换回字符串进行网络传输或保存到文件。例如,解析JSON字符串的代码可能...