- 浏览: 482639 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (205)
- HttpClient (5)
- Smarty (1)
- SVN (4)
- WebLogic (4)
- Netty (1)
- DataBase (11)
- Office (2)
- Net (3)
- Web Service (4)
- Spring (8)
- Tomcat (2)
- Ant (1)
- Erorr (3)
- JDK (2)
- LINUX (2)
- plugins (1)
- Flex/flash (2)
- PhotoShop (2)
- ExtJS (1)
- HTML5 (1)
- Slave4J (1)
- SoftWare (1)
- jQuery (2)
- servlet3.0 (1)
- fusionchart (1)
- ASP.Net (2)
- Java (50)
- C++ (1)
- JavaScript (15)
- C # (15)
- DesignMode (1)
- LINQ (1)
- SQLServer (1)
- PHP (1)
- HTML/CSS (1)
- Struts2 (3)
- Hibernate (1)
- XML (5)
- Jsoup (14)
- API (1)
- Json (13)
- HtmlUnit (1)
- Notepad (1)
- Android (3)
- bat (5)
- Apache (1)
- Quartz (1)
- CSS (3)
- HTMLParser (3)
- BootStrap (1)
- Redis (1)
- Web (1)
- Kotlin (1)
最新评论
-
wanggang0321:
666666
代码生成器实现的Entity,Dao,Service,Controller,JSP神器(含代码附件) -
masuweng:
支付宝Alipay源码工程Demo -
Fly_SkyXin:
加上这个包 还是报错 直接访问接口地址没问题 报这个错是什么意 ...
AxisFaultNot Found at org.apache.axis.transport.http.HTTPSender.readFromSocket( -
derongit123:
请问一下Weatherinfo 的这个类怎么弄
HttpClient+Gson解析中国天气网的天气预报信息 -
ai380102002:
j2ee6的包
springmvc+Ibatis+Bootstrap自定义标签分页+登录模版
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别。下面接着介绍用org.json构造和解析Json数据的方法示例。
用json-lib构造和解析Json数据的方法详解请参见我上一篇博文:Java构造和解析Json数据的两种方法详解一
一、介绍
org.json包是另一个用来beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.json.org/上有详细讲解,有兴趣的可以去研究。
二、下载jar依赖包
http://www.json.org/
由于org.json不能直接与bean进行转换,需要通过map进行中转,为了方便,我这里写了一个工具类JsonHelper,用于Json与Map、Bean的相互转换
package com.json;
import java.lang.reflect.Method;
import java.text.ParseException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
/**
*
* 1:将JavaBean转换成Map、JSONObject
* 2:将Map转换成Javabean
* 3:将JSONObject转换成Map、Javabean
*
* @author Alexia
*/
public class JsonHelper {
/**
* 将Javabean转换为Map
*
* @param javaBean
* javaBean
* @return Map对象
*/
public static Map toMap(Object javaBean) {
Map result = new HashMap();
Method[] methods = javaBean.getClass().getDeclaredMethods();
for (Method method : methods) {
try {
if (method.getName().startsWith("get")) {
String field = method.getName();
field = field.substring(field.indexOf("get") + 3);
field = field.toLowerCase().charAt(0) + field.substring(1);
Object value = method.invoke(javaBean, (Object[]) null);
result.put(field, null == value ? "" : value.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
/**
* 将Json对象转换成Map
*
* @param jsonObject
* json对象
* @return Map对象
* @throws JSONException
*/
public static Map toMap(String jsonString) throws JSONException {
JSONObject jsonObject = new JSONObject(jsonString);
Map result = new HashMap();
Iterator iterator = jsonObject.keys();
String key = null;
String value = null;
while (iterator.hasNext()) {
key = (String) iterator.next();
value = jsonObject.getString(key);
result.put(key, value);
}
return result;
}
/**
* 将JavaBean转换成JSONObject(通过Map中转)
*
* @param bean
* javaBean
* @return json对象
*/
public static JSONObject toJSON(Object bean) {
return new JSONObject(toMap(bean));
}
/**
* 将Map转换成Javabean
*
* @param javabean
* javaBean
* @param data
* Map数据
*/
public static Object toJavaBean(Object javabean, Map data) {
Method[] methods = javabean.getClass().getDeclaredMethods();
for (Method method : methods) {
try {
if (method.getName().startsWith("set")) {
String field = method.getName();
field = field.substring(field.indexOf("set") + 3);
field = field.toLowerCase().charAt(0) + field.substring(1);
method.invoke(javabean, new Object[] {
data.get(field)
});
}
} catch (Exception e) {
}
}
return javabean;
}
/**
* JSONObject到JavaBean
*
* @param bean
* javaBean
* @return json对象
* @throws ParseException
* json解析异常
* @throws JSONException
*/
public static void toJavaBean(Object javabean, String jsonString)
throws ParseException, JSONException {
JSONObject jsonObject = new JSONObject(jsonString);
Map map = toMap(jsonObject.toString());
toJavaBean(javabean, map);
}
}
package com.json;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
* 使用json-lib构造和解析Json数据
*
* @author Alexia
* @date 2013/5/23
*
*/
public class OrgJsonTest {
/**
* 构造Json数据
*
* @return
* @throws JSONException
*/
public static String BuildJson() throws JSONException {
// JSON格式数据解析对象
JSONObject jo = new JSONObject();
// 下面构造两个map、一个list和一个Employee对象
Map<String, String> map1 = new HashMap<String, String>();
map1.put("name", "Alexia");
map1.put("sex", "female");
map1.put("age", "23");
Map<String, String> map2 = new HashMap<String, String>();
map2.put("name", "Edward");
map2.put("sex", "male");
map2.put("age", "24");
List<Map> list = new ArrayList<Map>();
list.add(map1);
list.add(map2);
Employee employee = new Employee();
employee.setName("wjl");
employee.setSex("female");
employee.setAge(24);
// 将Map转换为JSONArray数据
JSONArray ja = new JSONArray();
ja.put(map1);
System.out.println("JSONArray对象数据格式:");
System.out.println(ja.toString());
// 将Javabean转换为Json数据(需要Map中转)
JSONObject jo1 = JsonHelper.toJSON(employee);
System.out.println("\n仅含Employee对象的Json数据格式:");
System.out.println(jo1.toString());
// 构造Json数据,包括一个map和一个含Employee对象的Json数据
jo.put("map", ja);
jo.put("employee", jo1.toString());
System.out.println("\n最终构造的JSON数据格式:");
System.out.println(jo.toString());
return jo.toString();
}
/**
* 解析Json数据
*
* @param jsonString
* Json数据字符串
* @throws JSONException
* @throws ParseException
*/
public static void ParseJson(String jsonString) throws JSONException,
ParseException {
JSONObject jo = new JSONObject(jsonString);
JSONArray ja = jo.getJSONArray("map");
System.out.println("\n将Json数据解析为Map:");
System.out.println("name: " + ja.getJSONObject(0).getString("name")
+ " sex: " + ja.getJSONObject(0).getString("sex") + " age: "
+ ja.getJSONObject(0).getInt("age"));
String jsonStr = jo.getString("employee");
Employee emp = new Employee();
JsonHelper.toJavaBean(emp, jsonStr);
System.out.println("\n将Json数据解析为Employee对象:");
System.out.println("name: " + emp.getName() + " sex: " + emp.getSex()
+ " age: " + emp.getAge());
}
/**
* @param args
* @throws JSONException
* @throws ParseException
*/
public static void main(String[] args) throws JSONException, ParseException {
// TODO Auto-generated method stub
ParseJson(BuildJson());
}
}
用json-lib构造和解析Json数据的方法详解请参见我上一篇博文:Java构造和解析Json数据的两种方法详解一
一、介绍
org.json包是另一个用来beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.json.org/上有详细讲解,有兴趣的可以去研究。
二、下载jar依赖包
http://www.json.org/
由于org.json不能直接与bean进行转换,需要通过map进行中转,为了方便,我这里写了一个工具类JsonHelper,用于Json与Map、Bean的相互转换
package com.json;
import java.lang.reflect.Method;
import java.text.ParseException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.json.JSONException;
import org.json.JSONObject;
/**
*
* 1:将JavaBean转换成Map、JSONObject
* 2:将Map转换成Javabean
* 3:将JSONObject转换成Map、Javabean
*
* @author Alexia
*/
public class JsonHelper {
/**
* 将Javabean转换为Map
*
* @param javaBean
* javaBean
* @return Map对象
*/
public static Map toMap(Object javaBean) {
Map result = new HashMap();
Method[] methods = javaBean.getClass().getDeclaredMethods();
for (Method method : methods) {
try {
if (method.getName().startsWith("get")) {
String field = method.getName();
field = field.substring(field.indexOf("get") + 3);
field = field.toLowerCase().charAt(0) + field.substring(1);
Object value = method.invoke(javaBean, (Object[]) null);
result.put(field, null == value ? "" : value.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
/**
* 将Json对象转换成Map
*
* @param jsonObject
* json对象
* @return Map对象
* @throws JSONException
*/
public static Map toMap(String jsonString) throws JSONException {
JSONObject jsonObject = new JSONObject(jsonString);
Map result = new HashMap();
Iterator iterator = jsonObject.keys();
String key = null;
String value = null;
while (iterator.hasNext()) {
key = (String) iterator.next();
value = jsonObject.getString(key);
result.put(key, value);
}
return result;
}
/**
* 将JavaBean转换成JSONObject(通过Map中转)
*
* @param bean
* javaBean
* @return json对象
*/
public static JSONObject toJSON(Object bean) {
return new JSONObject(toMap(bean));
}
/**
* 将Map转换成Javabean
*
* @param javabean
* javaBean
* @param data
* Map数据
*/
public static Object toJavaBean(Object javabean, Map data) {
Method[] methods = javabean.getClass().getDeclaredMethods();
for (Method method : methods) {
try {
if (method.getName().startsWith("set")) {
String field = method.getName();
field = field.substring(field.indexOf("set") + 3);
field = field.toLowerCase().charAt(0) + field.substring(1);
method.invoke(javabean, new Object[] {
data.get(field)
});
}
} catch (Exception e) {
}
}
return javabean;
}
/**
* JSONObject到JavaBean
*
* @param bean
* javaBean
* @return json对象
* @throws ParseException
* json解析异常
* @throws JSONException
*/
public static void toJavaBean(Object javabean, String jsonString)
throws ParseException, JSONException {
JSONObject jsonObject = new JSONObject(jsonString);
Map map = toMap(jsonObject.toString());
toJavaBean(javabean, map);
}
}
package com.json;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
/**
* 使用json-lib构造和解析Json数据
*
* @author Alexia
* @date 2013/5/23
*
*/
public class OrgJsonTest {
/**
* 构造Json数据
*
* @return
* @throws JSONException
*/
public static String BuildJson() throws JSONException {
// JSON格式数据解析对象
JSONObject jo = new JSONObject();
// 下面构造两个map、一个list和一个Employee对象
Map<String, String> map1 = new HashMap<String, String>();
map1.put("name", "Alexia");
map1.put("sex", "female");
map1.put("age", "23");
Map<String, String> map2 = new HashMap<String, String>();
map2.put("name", "Edward");
map2.put("sex", "male");
map2.put("age", "24");
List<Map> list = new ArrayList<Map>();
list.add(map1);
list.add(map2);
Employee employee = new Employee();
employee.setName("wjl");
employee.setSex("female");
employee.setAge(24);
// 将Map转换为JSONArray数据
JSONArray ja = new JSONArray();
ja.put(map1);
System.out.println("JSONArray对象数据格式:");
System.out.println(ja.toString());
// 将Javabean转换为Json数据(需要Map中转)
JSONObject jo1 = JsonHelper.toJSON(employee);
System.out.println("\n仅含Employee对象的Json数据格式:");
System.out.println(jo1.toString());
// 构造Json数据,包括一个map和一个含Employee对象的Json数据
jo.put("map", ja);
jo.put("employee", jo1.toString());
System.out.println("\n最终构造的JSON数据格式:");
System.out.println(jo.toString());
return jo.toString();
}
/**
* 解析Json数据
*
* @param jsonString
* Json数据字符串
* @throws JSONException
* @throws ParseException
*/
public static void ParseJson(String jsonString) throws JSONException,
ParseException {
JSONObject jo = new JSONObject(jsonString);
JSONArray ja = jo.getJSONArray("map");
System.out.println("\n将Json数据解析为Map:");
System.out.println("name: " + ja.getJSONObject(0).getString("name")
+ " sex: " + ja.getJSONObject(0).getString("sex") + " age: "
+ ja.getJSONObject(0).getInt("age"));
String jsonStr = jo.getString("employee");
Employee emp = new Employee();
JsonHelper.toJavaBean(emp, jsonStr);
System.out.println("\n将Json数据解析为Employee对象:");
System.out.println("name: " + emp.getName() + " sex: " + emp.getSex()
+ " age: " + emp.getAge());
}
/**
* @param args
* @throws JSONException
* @throws ParseException
*/
public static void main(String[] args) throws JSONException, ParseException {
// TODO Auto-generated method stub
ParseJson(BuildJson());
}
}
发表评论
-
使用fastjson解析json抓取新浪新闻文章
2015-01-04 14:06 2547首先看看2个简单的fastjson的使用 例子一 pa ... -
使用org.json解析较复杂的百度API附近的银行等地方
2014-04-28 17:27 985package com.org.utils; impo ... -
(转)Java构造和解析Json数据的两种方法详解一
2014-04-22 15:26 837在www.json.org上 ... -
json-lib与org.json与gson三种方法解析数组json数据
2014-02-24 13:21 1930import java.util.Iterator; ... -
Gson解析微信自定义菜单多个Button的数组数据
2014-01-04 22:14 1448package com.common; imp ... -
Jsoup+json-lib解析xml带中括号的数组Json数据
2013-10-30 23:14 2871<?xml version="1.0&qu ... -
HttpClient+Gson解析中国天气网的天气预报信息
2013-08-28 15:10 2794package com.test; import j ... -
Map,HashMap组装Json数据,jackson简单的入门和解析Json例子
2013-08-14 00:35 4498package com.ljl.org.domain; ... -
gson的JsonTreeReader和JsonReader一起使用代码详解例子
2013-07-21 14:36 1284package com.app.json; impor ... -
Gson的JsonWriter和JsonReader代码详解例子
2013-07-21 13:50 4829package com.app.json; impo ... -
灵活组装Json的数据使用Gson的JsonParser和JsonReader解析Json详解例子
2013-07-20 19:43 11063package com.app.json; ... -
使用Gson和Json-lib去解析json和组装Json数据例子
2013-07-18 14:07 3018package com.app.json; impo ...
相关推荐
通过Java构造和解析JSON数据通常需要引入相应的jar依赖包。在Java项目中,可以通过Maven或Gradle这样的构建工具来添加依赖,从而避免手动下载jar包和管理依赖关系的复杂性。 总之,使用Java进行JSON数据的构造和...
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。接下来通过本文给大家介绍使用Java构造和解析Json数据的两种方法,需要的朋友参考下吧
在C#中,有多种方法可以用来解析和生成JSON数据,其中最常见的两种方法是使用`Newtonsoft.Json`库和`DataContractJsonSerializer`。 ##### 使用Newtonsoft.Json方式 1. **安装Newtonsoft.Json**:首先需要在项目中...
JSON的结构主要由两种基本元素构成:Name/Value Pairs(键值对)和Array(数组)。 Name/Value Pairs是无序的键值集合,类似于哈希表或关联数组。在Android中,有一个类似的类“Bundle”,它们在某些方面具有相似的...
JSON结构主要由两种基本元素组成:Name/Value Pairs(键值对)和Array(数组)。键值对是无序的集合,类似于哈希表或关联数组,而数组则是有序的数据列表。 在Android平台中,JSON数据的解析通常依赖于Android SDK...
### Java解析JSON知识点详解 #### 一、引言 在现代软件开发中,尤其是在Web应用和服务端编程领域,JSON(JavaScript Object Notation)已经成为了一种非常流行的数据交换格式。它以其简洁、轻量且易于阅读的特点,...
### Java反射机制实现JavaBean转JSON的详细解析 #### 一、引言 在现代软件开发过程中,数据格式转换是一项非常常见的任务。特别是在处理不同系统之间的数据交换时,JSON(JavaScript Object Notation)因其轻量级...
本篇文章将重点讲解两种Android与服务端交互的方式,即使用Google原生的Gson库解析JSON数据以及使用JSONObject解析JSON数据。 首先,让我们详细了解使用Gson库解析JSON数据的方法。Gson是Google提供的一款强大的...
JSON支持两种基本结构:一种是由键值对组成的集合,类似Java中的`Map`;另一种是值的有序列表,类似Java中的`Array`。这种灵活性使其能够表达复杂的数据结构,同时保持简单易读的特点。 #### JSON数据示例 一个...
JSON是一种基于文本的数据交换格式,主要包括两种结构:一种是“名称/值”对的集合,另一种是值的有序列表。前者类似于字典或哈希表,后者类似于数组。在Java中,这些结构分别对应于`Map`和`List`。 #### ...
在Java开发中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于前后端数据传输。Fastjson是阿里巴巴开发的一个高性能的JSON库,它不仅解析速度快,且功能强大,无需额外依赖,适用于各种Java...
- JSON支持两种主要的数据结构:键值对集合(类似Java中的`Map`)和值的有序列表(类似Java中的`Array`)。 - 示例:`{ "Name": "Apple", "Expiry": "2007/10/11 13:54", "Price": 3.99, "Sizes": [ "Small", ...
JSON支持两种基本的数据结构: 1. **Name-Value对(键值对):** 类似于Java中的Map,表示一系列名称与其对应的值。 2. **Value的有序列表:** 类似于Java中的Array,表示一个按顺序排列的值的列表。 **示例:** ```...
这种灵活性使得JavaScript成为一种强大的脚本语言,尤其适用于网页交互和数据处理。 6. **JSON的优势** - **简洁明了**:JSON格式清晰易读,便于人和机器解析。 - **跨语言支持**:许多编程语言都支持JSON,使得...
`getdata()`方法使用`StringBuilder`类构建了一个包含数组的JSON字符串,其中每个元素都有`name`和`value`两个属性。 ```csharp [WebMethod] public static string GetData() { StringBuilder str = new ...
开发者可能通过调用`JSONObject.parse()`和`JSONArray.getJSONArray()`等方法,手动解析JSON数据并存入对应的Java对象。 **二、天气预报API** 天气预报信息通常由第三方气象服务提供商提供,如OpenWeatherMap、...
- MongoDB 支持 JSON 格式的数据,Java 驱动也提供了对 JSON 的解析和序列化功能。可以使用 `JSON.parse()` 解析 JSON 字符串为 `DBObject`,反之使用 `DBObject.toString()` 输出 JSON 格式。 通过以上步骤,初学...
对于 POST 请求,RestTemplate 提供了两种常用的方法: 1. **`postForObject()`** - **简介**:此方法用于发送 POST 请求,并获取响应体。 - **参数**:第一个参数为请求 URL,第二个参数为请求体(通常为一个...
- 解析传入的JSON对象,提取主表和子表的数据。 - 将JSON数据转换为对应的对象或对象列表。 - 根据主表ID查询数据库,如果不存在则插入新记录;如果存在,则更新记录。 - 对子表进行批量插入或更新操作。 通过这种...