目录:

(1)引入jar包;

  (2)json的构造;

  (3)json的解析;

(4)遍历未知key。

(1)java对json的处理,可借助org.json.jar.

<!-- https://mvnrepository.com/artifact/org.json/json -->
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20090211</version>
</dependency>

(2)json的构造

//construct json and output it
public String constructJson() throws JSONException {

    JSONObject map1 = new JSONObject();
map1.put("name", "张三");
map1.put("password", "123");
System.out.println("map1 --->" + map1); JSONObject map2 = new JSONObject();
map2.put("name", "李四");
map2.put("password", "456");
System.out.println("map2 --->" + map2); JSONArray list = new JSONArray();
list.put(map1);
list.put(map2);
System.out.println("jsonMembers --->" + list); JSONObject json=new JSONObject();
json.put("users", list);
System.out.println("json --->" + json); return json.toString();
} public static void main(String args[]) throws Exception{
RoomTool rt = new RoomTool();
rt.constructJson();
}
输出如下:

map1 --->{"password":"123","name":"张三"}
map2 --->{"password":"456","name":"李四"}
jsonMembers --->[{"password":"123","name":"张三"},{"password":"456","name":"李四"}]
json --->{"users":[{"password":"123","name":"张三"},{"password":"456","name":"李四"}]}

(3)json的解析

//construct json from String and resolve it.
public String jsonTest2() throws JSONException{
String jsonString=jsonTest();
JSONObject json= new JSONObject(jsonString);
JSONArray jsonArray=json.getJSONArray("users");
String loginNames="loginname list:";
for(int i=0;i<jsonArray.length();i++){
JSONObject user=(JSONObject) jsonArray.get(i);
String userName=(String) user.get("loginname");
if(i==jsonArray.length()-1){
loginNames+=userName;
}else{
loginNames+=userName+",";
}
}
System.out.println("loginNames --->" + loginNames);
return loginNames;
}
public  static void main(String args[]) throws Exception{
RoomTool tool = new RoomTool();
tool.jsonTest2();
}
输出如下:loginNames --->loginname list:zhangfan,zf

(4)遍历未知key
public void parseJson(String jsonString) throws JSONException{
JSONObject json= new JSONObject(jsonString);
Iterator it = json.keys();
while(it.hasNext()){
String key = it.next().toString();
int values = Integer.parseInt((String)json.get(key));
System.out.println(key + "--->" + values);
}
} public static void main(String args[]) throws Exception{
RoomTool tool = new RoomTool();
tool.parseJson("{\"1\":\"0\",\"2\":\"30\",\"3\":\"15\",\"4\":\"15\",\"5\":\"20\",\"6\":\"20\"}");
} 输出:

    1--->0
    2--->30
    3--->15
    4--->15
    5--->20
    6--->20

Json对象与Json字符串的转化、JSON字符串与Java对象的转换

 

一.Json对象与Json字符串的转化

1.jQuery插件支持的转换方式

  $.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象

2.浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:

  JSON.stringify(obj)将JSON转为字符串。JSON.parse(string)将字符串转为JSON格式;

var a={"name":"tom","sex":"男","age":"24"}; 
var b='{"name":"Mike","sex":"女","age":"29"}'; 
var aToStr=JSON.stringify(a); 
var bToObj=JSON.parse(b); 
alert(typeof(aToStr));  //string 
alert(typeof(bToObj));//object

3.Javascript支持的转换方式: 
eval('(' + jsonstr + ')'); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号 
注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。

4.JSON官方的转换方式: 
http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法; 
可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。

二、JSON 字符串 与 java 对象的转换

1. 把java 对象列表转换为json对象数组,并转为字符串

JSONArray array = JSONArray.fromObject(list);
    String jsonstr = array.toString();

2. 把java对象转换成json对象,并转化为字符串

JSONObject object = JSONObject.fromObject(user);
  Log4jInit.ysulogger.debug(object.toString());

3.把JSON字符串转换为JAVA 对象数组
  JSONArray json = JSONArray.fromObject(userStr);//userStr是json字符串
  List<User> users= (List<User>)JSONArray.toCollection(json, User.class);

4.把JSON字符串转换为JAVA 对象

  JSONObject jsonobject = JSONObject.fromObject(jsonStr);
  User user= (User)JSONObject.toBean(object,User.class);

 
 
 

json 构造和解析的更多相关文章

  1. Java构造和解析Json数据的两种方法详解二

    在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...

  2. Java构造和解析Json数据的两种方法详解二——org.json

    转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的jso ...

  3. Java构造和解析Json数据的两种方法详解一——json-lib

    转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的jso ...

  4. Java构造和解析Json数据的两种方法详解一

    一.介绍 JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.js ...

  5. HttpURLConnection从网上获取Json数据并解析详解

    HttpURLConnection从网上获取Json数据并解析 1.HttpURLConnection请求数据的步骤 (1)构造一个URL接口地址: URL url = new URL("h ...

  6. Kotlin入门(31)JSON字符串的解析

    json是App进行网络通信最常见的数据交互格式,Android也自带了json格式的处理工具包org.json,该工具包主要提供了JSONObject(json对象)与JSONArray(json数 ...

  7. JSON.parse() 方法解析一个JSON字符串

    JSON.parse() 方法解析一个JSON字符串,构造由字符串描述的JavaScript值或对象.可以提供可选的reviver函数以在返回之前对所得到的对象执行变换. 语法EDIT JSON.pa ...

  8. Java中使用org.json和json-lib解析JSON

    文章目录  [隐藏] 一.JavaProject中org.json解析JSON 1.JSON的org.son-api下载 1)JSON网址 2)JSON的java解析org.json-api网址 3) ...

  9. C# Json传值与解析

    最近接触了工作室的项目,觉得一个功能的实现有点不好,心想不能就动手改了下,做了才知道我的js是多么的渣,功能是这样的: 我要实现的功能就是当选择学院时,就放松get请请求到后台,后台返回json信息再 ...

随机推荐

  1. 函数:MySQL中字符串匹配函数LOCATE和POSITION使用方法

    1. 用法一 LOCATE(substr,str) POSITION(substr IN str) 函数返回子串substr在字符串str中第一次出现的位置.如果子串substr在str中不存在,返回 ...

  2. Servlet-Cookie源码分析 源码环境:Tomcat8

    最近在学习servlet的一些实现细节,阅读了Cookie的源码. Cookie本质上是服务器发送给客户端(主要是浏览器)的一个会话临时数据. 其源码注释文档的说明: Creates a cookie ...

  3. RN中listView的每个item等高

    今天写ListView的每个Item的布局的时候发现,当文字太长时被截掉了不能完全显示,检查了很久发现没有设置固定高度都是可伸缩的为什么没有伸缩呢.看了很久才发现每个item是等高的,于是仔细检查才看 ...

  4. FastDFS 通过文件名获取文件信息

    /** * 获取文件信息 * * param string group_name 文件所在的组名 * param string file_id 文件id(如: M00/09/BE/rBBZolgj6O ...

  5. Android基础总结(九)

    多媒体概念(了解) 文字.图片.音频.视频 计算机图片大小的计算(掌握) 图片大小 = 图片的总像素 * 每个像素占用的大小 单色图:每个像素占用1/8个字节 16色图:每个像素占用1/2个字节 25 ...

  6. ActiveMQ入门

    ActiveMQ简介 概要 开源 JMS-compliant 消息中间件message-oriented middleware(MOM) 松耦合,相对于RPC的紧耦合 发送消息fire-and-for ...

  7. Sql的decimal、float、double类型的区别

    三者的区别介绍 float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E ...

  8. ajax-登陆+验证码

    登陆用户名和密码判断+验证码验证 省略dao层和service层 1.生成验证码的number.jsp <%@ page contentType="image/jpeg" l ...

  9. 解决Python中不能输入汉字的问题

    我们在python的IDE中有时候会输入中文,python对中文不是太友好.现在我们就解决这个问题.一般情况下在你的代码前面加入: # coding: utf-8 reload(sys)sys.set ...

  10. wireshark lua脚本

    1.目的:解析rssp2协议   2.如何使用wireshark lua插件 将编写的(假设为rssp2.lua)lua文本,放入wireshark 安装目录下,放哪里都行只要dofile添加了路径. ...