java 封装解析 Json数据。
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Vector; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.led.image.TransformUtils;
import com.ledsystem.util.EncodingDetect; /**
* @deprecated锛氳В鏋怞son鏁扮粍
* @author Gary huang
* @since : 1.0.0
* */ @SuppressWarnings("unchecked")
public class JsonArrayUtils { private List<NodeObject> nodes = null ; public JsonArrayUtils(String json){
try {
JSONArray jsonArray = JSONArray.parseArray(json);
nodes = parseNodes( jsonArray ) ;
} catch (Exception e) {
e.printStackTrace() ;
}
} List<NodeObject> parseNodes(JSONArray array){
List<NodeObject> nodes = new Vector<NodeObject>();
int size = array.size() ;
for (int i = 0; i < size; i++) {
try {
JSONObject json = array.getJSONObject(i);
nodes.add(parseNodeObject(json)) ;
} catch (Exception e) {
e.printStackTrace() ;
} }
return nodes ;
} NodeObject parseNodeObject(JSONObject json){
NodeObject node = new NodeObject();
Iterator<String> key = json.keySet().iterator() ;
while(key.hasNext()){
String keyName = TransformUtils.toString(key.next());
try {
Object value = json.get( keyName ) ;
if(null == value){
continue ;
}
if(value instanceof JSONObject){
node.put( keyName , parseNodeObject((JSONObject) value ) ) ;
}else if(value instanceof JSONArray){
node.put( keyName , parseNodes((JSONArray) value ) ) ;
}else{
node.put( keyName , value ) ;
}
} catch (Exception e){
e.printStackTrace() ;
}
}
return node ;
} public List<NodeObject> getNodes() {
return nodes;
} public NodeObject getNode() {
return nodes.get(0) ;
} public static class NodeObject{
private Map<String, Object> datas = new HashMap<String, Object>(); public void put(String key , Object value){
datas.put(key, value) ;
} public Object get(String key){
return datas.get(key) ;
} @Override
public String toString() {
return datas.toString();
}
} public static class NodeItem{ private String key ; private Object value ; public String getKey() {
return key;
} public void setKey(String key) {
this.key = key;
} public Object getValue() {
return value;
} public void setValue(Object value) {
this.value = value;
} public NodeObject getNode(){
return (NodeObject)this.value;
} public List<NodeObject> getNodes(){
return ((List<NodeObject>)this.value);
} @Override
public String toString() {
return "key:" + key
+ "value:" + value ;
}
}
}
java 封装解析 Json数据。的更多相关文章
- java 封装返回json数据
做的东西,一直是用easyui的,和后台的交互数据都是json格式的. 今天想要单独弄一个json数据返回给前台,其实是比较简单的问题,json接触不多,记录一下. 代码: public static ...
- Java对【JSON数据的解析】--Gson解析法
Gson和fastjson分别为谷歌和阿里巴巴对JSON数据进行处理封装的jar包 两者异同点: 相同点:都是根据JSON数据创建相应的类 不同点: 1.调用方式区别 谷歌:方法都是非静态的,需要先创 ...
- Java构造和解析Json数据的两种方法详解二
在www.json.org上公布了很多JAVA下的json构造和解析工具,其中org.json和json-lib比较简单,两者使用上差不多但还是有些区别.下面接着介绍用org.json构造和解析Jso ...
- Java学习-029-JSON 之三 -- 模仿 cssSelector 封装读取 JSON 数据方法
前文简单介绍了如何通过 json-20141113.jar 提供的功能获取 JSON 的数据,敬请参阅:Java学习-028-JSON 之二 -- 数据读取. 了解学习过 JQuery 的朋友都知道, ...
- Java构造和解析Json数据的两种方法详解一
一.介绍 JSON-lib包是一个beans,collections,maps,java arrays 和XML和JSON互相转换的包,主要就是用来解析Json数据,在其官网http://www.js ...
- Introduction to Structured Data json的2种形式 JAVA解析JSON数据 - JsonArray JsonObject
https://developers.google.com/search/docs/guides/intro-structured-data Structured data refers to kin ...
- 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 ...
- 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题
1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ...
随机推荐
- chkconfig---检查设置系统服务
chkconfig命令 chkconfig命令检查.设置系统的各种服务.这是Red Hat公司遵循GPL规则所开发的程序,它可查询操作系统在每一个执行等级中会执行哪些系统服务,其中包括各类常驻服务 ...
- type---显示指定命令的类型
type命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令. 命令类型: alias:别名. keyword:关键字,Shell保留字. function:函数,Shell函数. bui ...
- js18--继承方式
方式1:子类.prototype = 父类对象 Boy.prototype = new Person(); Sub.prototype = new Sup('张三'); //可以传参数也可以不传 ...
- Property-属性动画
今天第一次接触到属性动画.参考着 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38067475 的博客,自己学习下. 它的区别跟 ...
- 使用wpaint绘图软件时:Uncaught DOMException: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The image argument is a canvas element with a width or height of 0.
使用wpaint绘图软件时:Uncaught DOMException: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': Th ...
- BZOJ4196: [Noi2015]软件包管理器(树链剖分)
Description Linux用户和OSX用户一定对软件包管理器不会陌生.通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖( ...
- Incapsula免费日本CDN加速和CDNZZ香港CDN节点加速
Incapsula免费日本CDN加速和CDNZZ香港CDN节点加速 免费的CDN对于那些将空间放在美国的博客网站加速效果是最好的,CDN可以解决国内连接美国的网络线路经常抽风和访问速度时好时坏的问题, ...
- nodejs连接mysql突然中断问题解决方案
db/index.js数据库配置文件 一.在数据库连接失败的情况下,回调函数,再次发起连接,直到连接成功为止. handleDisconnect(){ this.connection.connect( ...
- Java Web学习总结(16)——JSP的九个内置对象
一.JSP运行原理 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet ...
- ECMall 25个 数据库表 说明文档
ecm_acategory //文章分类表 字段 类型 Null 默认 注释 cate_id int(10) 否 自增ID号,分类ID号 cate_name varchar(100) 否 分类 ...