转载网址:http://www.cnblogs.com/undead/archive/2012/07/18/2594900.html

最近在做一个基于JAVA Servlet的WEB应用以及对应的Anroid应用客户端的开发工作。

其中,在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JSON字符串来传递数据并在WEB前端或者Android客户端使用JSON来解析接收到的数据。

首先,在JAVA中使用JSON需要引入 org.json 包(点击 这里 可以下载相应的JAR包!), 并在程序中引入相应的JSON类:

 import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

其次,在服务器端的Servlet类中,可以使用如下方法收集数据并生成相应的JSON字符串

 //声明一个Hash对象并添加数据
Map params = new HashMap(); params.put("username", username);
params.put("user_json", user); //声明JSONArray对象并输入JSON字符串
JSONArray array = JSONArray.fromObject(params);
put.println(array.toString());

在WEB前端可以通过javascript直接对JSON字符串进行解析,在Android客户端的话,需要使用JSON类来解析字符串:

 //@description: 根据接收到的JSON字符串来解析字符串中所包含的数据和数据对象

 //接收到的JSON字符串
String result = "[{\"username\": \"your name\", \"user_json\": {\"username\": \"your name\", \"nickname\": \"your nickname\"}}]"; //根据字符串生成JSON对象
JSONArray resultArray = new JSONArray(result);
JSONObject resultObj = resultArray.optJSONObject(0); //获取数据项
String username = resultObj.getString("username"); //获取数据对象
JSONObject user = resultObj.getJSONObject("user_json");
String nickname = user.getString("nickname");

其实,主要就是涉及到以下集中数据类型之间的转换:

1. String 转换为JSON对象

 import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject; //别忘了添加上JSON包哦!
public class StringToJSON {
public static void main(String[] args) throws JSONException{ System.out.println("abc");
//定义JSON字符串
String jsonStr = "{\"id\": 2," +
" \"title\": \"json title\", " +
"\"config\": {" +
"\"width\": 34," +
"\"height\": 35," +
"}, \"data\": [" +
"\"JAVA\", \"JavaScript\", \"PHP\"" +
"]}"; //转换成为JSONObject对象
JSONObject jsonObj = new JSONObject(jsonStr); //从JSONObject对象中获取数据
JavaBean bean = new JavaBean(); //根据属性名称获取int型数据;
bean.setId(jsonObj.getInt("id")); //根据属性名获取String数据;
bean.setTitle(jsonObj.getString("title")); //根据属性名获取JSONObject类
JSONObject config = jsonObj.getJSONObject("config");
bean.setWidth(config.getInt("width"));
bean.setHeight(config.getInt("height")); //根据属性名获取JSONArray数组
JSONArray data = jsonObj.getJSONArray("data");
for(int index = 0, length = data.length(); index < length; index++) {
//这里在org.json.JSONArray对象中居然没有找到toArray方法,求各位网友给出解决办法啊!
// bean.setLanguages(String[]);
}
}
} class JavaBean{
private int id ;
private String title;
private int width;
private int height;
private String[] languages; //这里省略了设置器和访问器
}

2. JSON对象转换为String字符串

 public static void main(String[] args) throws JSONException {

         //创建JSONObject对象
JSONObject json = new JSONObject(); //向json中添加数据
json.put("username", "wanglihong");
json.put("height", 12.5);
json.put("age", 24); //创建JSONArray数组,并将json添加到数组
JSONArray array = new JSONArray();
array.put(json); //转换为字符串
String jsonStr = array.toString(); System.out.println(jsonStr);
}

最终输出结果为: [{"username":"wanglihong","height":12.5,"age":24}]

3. 集合转换为JSONArray对象

     public static void main(String[] args)throws JSONException{
//初始化ArrayList集合并添加数据
List<String> list = new ArrayList<String>();
list.add("username");
list.add("age");
list.add("sex"); //初始化HashMap集合并添加数组
Map map = new HashMap();
map.put("bookname", "CSS3实战");
map.put("price", 69.0); //初始化JSONArray对象,并添加数据
JSONArray array = new JSONArray();
array.put(list);
array.put(map); //生成的JSON字符串为:[["username","age","sex"],{"price":69,"bookname":"CSS3实战"}]
}

 

转载:JAVA中使用JSON进行数据传递的更多相关文章

  1. JAVA中使用JSON进行数据传递

    最近在做一个基于JAVA Servlet的WEB应用以及对应的Anroid应用客户端的开发工作. 其中,在接口的访问和数据的传输方面使用的比较多的是使用JSON对象来操作格式化数据:在服务器端采用JS ...

  2. JSON(三)——java中对于JSON格式数据的解析之json-lib与jackson

    java中对于JSON格式数据的操作,主要是json格式字符串与JavaBean之间的相互转换.java中能够解析JSON格式数据的框架有很多,比如json-lib,jackson,阿里巴巴的fast ...

  3. 在JSP页面中输出JSON格式数据

    JSON-taglib是一套使在JSP页面中输出JSON格式数据的标签库. JSON-taglib主页: http://json-taglib.sourceforge.net/index.html J ...

  4. fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map

    作者:buster2014 推荐:长安散人 fastJson在java后台转换json格式数据探究(二)--处理数组/List/Map JSON字符串与Java对象的转换 1.将Java对象或Java ...

  5. Java中哪个JSON库的解析速度是最快的?

    JSON已经成为当前服务器与WEB应用之间数据传输的公认标准,不过正如许多我们所习以为常的事情一样,你会觉得这是理所当然的便不再深入思考 了.我们很少会去想用到的这些JSON库到底有什么不同,但事实上 ...

  6. SpringMVC中使用Json传数据

    在web项目中使用Json进行数据的传输是非常常见且有用的,在这里介绍下在SpringMVC中使用Json传数据的一种方法,在我的使用中,主要包括下面四个部分(我个人喜好使用maven这类型工具进行项 ...

  7. fastJson java后台转换json格式数据

    什么事JSON? JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Progra ...

  8. Java中double类型的数据精确到小数点后两位

    Java中double类型的数据精确到小数点后两位 多余位四舍五入,四种方法 一: double f = 111231.5585;BigDecimal b = new BigDecimal(f); d ...

  9. http中使用json封装数据的性能测试

    http中使用json封装数据的性能测试     一个项目使用json封装数据,接口例如:   客户端发送:   POST /list.do HTTP/1.1   Host: zoomi.com.cn ...

随机推荐

  1. 开源一套DirectUI界面库

    http://www.cppblog.com/weiym/archive/2012/07/03/181307.html

  2. Xamarin.Forms-webservices访问

    虽然xamarin.android/ios 均支持右键添加web引用方式引用webservices,但是xamarin.forms不支持此方式,而如果android/ios各做一套采用抽象方式实现则工 ...

  3. Java---设计模块(设计模块的简介及最简单的俩个单例代码加测试)

    设计模式学习概述: ★ 为什么要学习设计模式 1.设计模式都是一些相对优秀的解决方案,很多问题都是典型的.有代表性的问题,学习设计模式,我们就不用自己从头来解决这些问题,相当于在巨人的肩膀上,复用这些 ...

  4. cf498C Array and Operations

    C. Array and Operations time limit per test 1 second memory limit per test 256 megabytes input stand ...

  5. erlang mnesia 数据库查询

    Mnesia是一个分布式数据库管理系统,适合于电信和其它需要持续运行和具备软实时特性的Erlang应用,越来越受关注和使用,但是目前Mnesia资料却不多,很多都只有官方的用户指南.下面的内容将着重说 ...

  6. 查询死锁和处理死锁(SqlServer)

    -------------------查询死锁,极其引起的原因-------------------------------use master go create procedure sp_who_ ...

  7. css3 渐变linear-gradient

    background: -moz-linear-gradient(top, #FC641C, #FC761C); 参数:其共有三个参数,第一个参数表示线性渐变的方向,top 是从上到下.left 是从 ...

  8. Java 实现Md5算法

    package other; import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;/* * ...

  9. Jsp详解

    1Jsp基础 1.1 Jsp引入 Servlet的作用: 用java语言开发动态资源的技术!!! Jsp的作用:用java语言(+html语言)开发动态资源的技术!!! Jsp就是servlet!!! ...

  10. Hadoop在Windows环境下的部署[转]

    http://blog.csdn.net/ruby97/article/details/7423088 经过一整天的折腾,参考了网上很多资料,我机器上的Hadoop似乎是配置成功了.下面分享一下详细的 ...