JSON互转
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类:
1 import org.json.JSONArray;
2 import org.json.JSONException;
3 import org.json.JSONObject;
其次,在服务器端的Servlet类中,可以使用如下方法收集数据并生成相应的JSON字符串

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

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

1 //@description: 根据接收到的JSON字符串来解析字符串中所包含的数据和数据对象
2
3 //接收到的JSON字符串
4 String result = "[{\"username\": \"your name\", \"user_json\": {\"username\": \"your name\", \"nickname\": \"your nickname\"}}]";
5
6 //根据字符串生成JSON对象
7 JSONArray resultArray = new JSONArray(result);
8 JSONObject resultObj = resultArray.optJSONObject(0);
9
10 //获取数据项
11 String username = resultObj.getString("username");
12
13 //获取数据对象
14 JSONObject user = resultObj.getJSONObject("user_json");
15 String nickname = user.getString("nickname");

其实,主要就是涉及到以下集中数据类型之间的转换:
1. String 转换为JSON对象

1 import org.json.JSONArray;
2 import org.json.JSONException;
3 import org.json.JSONObject;
4
5 //别忘了添加上JSON包哦!
6 public class StringToJSON {
7 public static void main(String[] args) throws JSONException{
8
9 System.out.println("abc");
10 //定义JSON字符串
11 String jsonStr = "{\"id\": 2," +
12 " \"title\": \"json title\", " +
13 "\"config\": {" +
14 "\"width\": 34," +
15 "\"height\": 35," +
16 "}, \"data\": [" +
17 "\"JAVA\", \"JavaScript\", \"PHP\"" +
18 "]}";
19
20 //转换成为JSONObject对象
21 JSONObject jsonObj = new JSONObject(jsonStr);
22
23 //从JSONObject对象中获取数据
24 JavaBean bean = new JavaBean();
25
26 //根据属性名称获取int型数据;
27 bean.setId(jsonObj.getInt("id"));
28
29 //根据属性名获取String数据;
30 bean.setTitle(jsonObj.getString("title"));
31
32 //根据属性名获取JSONObject类
33 JSONObject config = jsonObj.getJSONObject("config");
34 bean.setWidth(config.getInt("width"));
35 bean.setHeight(config.getInt("height"));
36
37 //根据属性名获取JSONArray数组
38 JSONArray data = jsonObj.getJSONArray("data");
39 for(int index = 0, length = data.length(); index < length; index++) {
40 //这里在org.json.JSONArray对象中居然没有找到toArray方法,求各位网友给出解决办法啊!
41 // bean.setLanguages(String[]);
42 }
43 }
44 }
45
46 class JavaBean{
47 private int id ;
48 private String title;
49 private int width;
50 private int height;
51 private String[] languages;
52
53 //这里省略了设置器和访问器
54 }

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

1 public static void main(String[] args) throws JSONException {
2
3 //创建JSONObject对象
4 JSONObject json = new JSONObject();
5
6 //向json中添加数据
7 json.put("username", "wanglihong");
8 json.put("height", 12.5);
9 json.put("age", 24);
10
11 //创建JSONArray数组,并将json添加到数组
12 JSONArray array = new JSONArray();
13 array.put(json);
14
15 //转换为字符串
16 String jsonStr = array.toString();
17
18 System.out.println(jsonStr);
19 }

最终输出结果为: [{"username":"wanglihong","height":12.5,"age":24}]
3. 集合转换为JSONArray对象

1 public static void main(String[] args)throws JSONException{
2 //初始化ArrayList集合并添加数据
3 List<String> list = new ArrayList<String>();
4 list.add("username");
5 list.add("age");
6 list.add("sex");
7
8 //初始化HashMap集合并添加数组
9 Map map = new HashMap();
10 map.put("bookname", "CSS3实战");
11 map.put("price", 69.0);
12
13 //初始化JSONArray对象,并添加数据
14 JSONArray array = new JSONArray();
15 array.put(list);
16 array.put(map);
17
18 //生成的JSON字符串为:[["username","age","sex"],{"price":69,"bookname":"CSS3实战"}]
19 }

JSON互转的更多相关文章
- JavaScript实现XML与JSON互转代码(转载)
下面来分享一个关于JavaScript实现XML与JSON互转例子,这里面介绍了国外的三款xml转json的例子,希望这些例子能给你带来帮助. 最近在开发在线XML编辑器,打算使用JSON做为中间格式 ...
- c++实现Xml和json互转【转】
https://blog.csdn.net/kfy2011/article/details/51774242 1.下载c语言的cJson库源码,库很小,只有两个文件cJSON.c和cJSON.h.下载 ...
- JSONUtil(JAVA对象/List与json互转,xml与json互转)
package com.chauvet.utils.json; import java.io.BufferedReader; import java.io.File; import java.io.F ...
- JSON 和 POJO 互转,List<T> 和 JSON 互转
JSON 和 POJO import com.alibaba.fastjson.JSONObject; import org.slf4j.Logger; import org.slf4j.Logger ...
- SQL2008使用json.net实现XML与JSON互转
借助CLR,首先实现字符串的互转,然后使用存储过程实现JSON2table public class JsonFunction { /// <summary> ...
- jq each 用法以及js与json互转
$(function(){ var json = '[{"id":"1","tagName":"apple"},{&qu ...
- C# :XML和JSON互转
我们一般在用JSON或者XML作为数据交换的时候,可能定义一个没有真正意义方法的类,其实就是一个关于属性的数据结构,如果对于这种情况,可以将这个类对象作为中介,然后利用C#提供的序列化和反序列化的方法 ...
- JsonUtil对象与json互转
OrderDto orderDto = JsonUtil.json2Object(json, new TypeRef<OrderDto>() { }); package c ...
- Js Json 互转
推荐: //js对象转换为 JSON 文本 var text = '[{"id":1,"name":"C","size" ...
随机推荐
- Android jar包混淆
具体可参考http://proguard.sourceforge.net/manual/examples.html#library 1.找到android的adt目录下的 D:\soft\adt-bu ...
- OC 代理 协议 委托 数据源的概念
(网摘) OBJC 中的 protocol 相当于 java 里的接口,delagate 就是接口的实现类(C中的回调类似 ): 数据源就是对象遵循了存储数据的协议,可以存储使用数据 协议表示了方法可 ...
- Java 遍历Map
Set<Map.Entry<String, String>> aSet = map.entrySet(); Iterator<Map.Entry<String, S ...
- ThinkPadT440 Ubuntu14.04 RTL8192EE 链接无线网
ThinkPadT440安装完 Ubuntu14.04之后,查看了以下内核版本为: 3.13.0-24-generic 1:通过ifconfig发现没有wlan0 2:通过 lspci -vnn | ...
- NOI十连测 第四测 T1
思路:首先每个蚂蚁移速相同,而且碰到就转头,这其实等价于擦肩而过! 看到2n个数互不相同就觉得方便多了:枚举每个数字往左或者往右作为最慢,然后考虑其他蚂蚁有多少种走路方向. (1),走的距离大于m/2 ...
- SQL Server 视图
视图实际上就是一个存储查询,重点是是可以混合和匹配来自基本表(或者其他视图)的数据,从而创建在很多方面像另一个基表那样起作用的对象.可以创建一个简单的查询,仅仅从一个表中选择几列,而忽略其他列:或者也 ...
- [置顶] ruby复制对象的方法(dup 和 clone)
Ruby内置的方法Object#clone和Object#dup可以用来copy一个对象,两者区别是dup只复制对象的内容,而clone还复制与对象相关联的内容,如singleton method [ ...
- Oleg Sych - » Pros and Cons of T4 in Visual Studio 2008
Oleg Sych - » Pros and Cons of T4 in Visual Studio 2008 Pros and Cons of T4 in Visual Studio 2008 Po ...
- SVN trunk、branch、tag的用法
Subversion有一个很标准的目录结构,是这样的.比如项目是proj,svn地址为svn://proj/,那么标准的svn布局是svn://proj/|+-trunk+-branches+-tag ...
- PHP 文件打开/读取
PHP Open File - fopen() 打开文件的更好的方法是通过 fopen() 函数.此函数为您提供比 readfile() 函数更多的选项. 在课程中,我们将使用文本文件 "w ...