json 构造和解析
目录:
(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 构造和解析的更多相关文章
- Java构造和解析Json数据的两种方法详解二
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...
- Java构造和解析Json数据的两种方法详解二——org.json
转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/24/3096437.html 在www.json.org上公布了很多JAVA下的jso ...
- Java构造和解析Json数据的两种方法详解一——json-lib
转自:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/23/3096001.html 在www.json.org上公布了很多JAVA下的jso ...
- Java构造和解析Json数据的两种方法详解一
一.介绍 JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.js ...
- HttpURLConnection从网上获取Json数据并解析详解
HttpURLConnection从网上获取Json数据并解析 1.HttpURLConnection请求数据的步骤 (1)构造一个URL接口地址: URL url = new URL("h ...
- Kotlin入门(31)JSON字符串的解析
json是App进行网络通信最常见的数据交互格式,Android也自带了json格式的处理工具包org.json,该工具包主要提供了JSONObject(json对象)与JSONArray(json数 ...
- JSON.parse() 方法解析一个JSON字符串
JSON.parse() 方法解析一个JSON字符串,构造由字符串描述的JavaScript值或对象.可以提供可选的reviver函数以在返回之前对所得到的对象执行变换. 语法EDIT JSON.pa ...
- Java中使用org.json和json-lib解析JSON
文章目录 [隐藏] 一.JavaProject中org.json解析JSON 1.JSON的org.son-api下载 1)JSON网址 2)JSON的java解析org.json-api网址 3) ...
- C# Json传值与解析
最近接触了工作室的项目,觉得一个功能的实现有点不好,心想不能就动手改了下,做了才知道我的js是多么的渣,功能是这样的: 我要实现的功能就是当选择学院时,就放松get请请求到后台,后台返回json信息再 ...
随机推荐
- HTML之form表单和input系列
<form method="POST" action="/host"> <input class="c1" type=&q ...
- Redis-Sentinel(Redis集群监控管理)
Redis的高可用方案的实现:主从切换以及虚拟IP或客户端 从Redis 2.8开始加入对Sentinel机制从而实现了服务器端的主从切换,但目前尚未发现实现虚拟IP或客户端切换方案 Redis-Se ...
- C# 常用代码
学习备忘 1.判断程序是否运行 static void Main() { bool canCreateNew; System.Threading.Mutex myownmutex = new Syst ...
- Jquery获取offsetHeight
纯javascript: window.document.getElementById('MainColumn').offsetHeight jquery: $('#id').get(0).offse ...
- Android Studio更新升级方法
自从2013 Google I/O大会之后,笔者就将android ide开发工具从eclipse迁移到Android Studio了,android studio一直在更新完善,为了与时俱进,我们当 ...
- 放弃火狐,选择chrome
最近公司笔记本电脑经常卡的不行(win10系统),先是硬盘经常占用99%-100%,改系统设置,软件优化,硬件测试...尝试了能搜索到所有办法后,还是没有解决,换成win7后感觉稍微好点了(心理作用? ...
- css随笔1
1.简单清除浏览器样式 *{ padding: 0px; margin: 0px; } 2.得到屏幕范围的div html,body{ width: 1 ...
- js parsefloat
项目中需要对返回的小数进行格式化,把零省略掉. 1.00 ---> 1 1.01 ---> 1.01 1.10 ---> 1.1 parseFloat() 函数可解析一个 ...
- JMeter 集合点
JMeter也有像LR中的集合点,本篇就来介绍下JMeter的集合点如何去实现. JMeter里面的集合点通过添加定时器来完成. 注意:集合点的位置一定要在Sample之前. 集合点:简单来理解一下, ...
- DOG检测
共享一个代码算了,太忙鸟,有时间在补充. function [] = dog_learn() img = imread('/Users/img/lena.png'); img = rgb2gray(i ...