FinanceJson, 对Json的包装.底层使用jackson实现。
1. 生成节点
(1)在某个路径下添加某个节点
         FinanceJson financeJsonInfo = new FinanceJson();
FinanceJsonUtil.addNode(financeJsonInfo, "terminal.uid", new StringNode("dasd"));
FinanceJsonUtil.addNode(financeJsonInfo, "terminal.gid", new StringNode("g213"));
FinanceJsonUtil.addNode(financeJsonInfo, "terminal.pid", new StringNode("p213"));
System.out.println(financeJsonInfo.toString());

输出:

{
"terminal" : {
"uid" : "dasd",
"gid" : "g213",
"pid" : "p213"
}
}

(2) 添加某个实体类作为节点

<1>  不指定路径, 路径为  "类名.属性名",  类名首字母小写。 可嵌套递归

     FinanceJson financeJsonInfo = new FinanceJson();
Cow cow = new Cow();
cow.setCowName("coco");
cow.setCowWWW("cowww");
FinanceJsonUtil.addNodeByPojo(financeJsonInfo, cow);
System.out.println(financeJsonInfo.toString()); class Cow{
private String cowName;
private String cowWWW;
setter..getter..略
}

输出:

{
"cow" : {
"cowName" : "coco",
"cowWWW" : "cowww"
}
}
<2> 指定路径, "指定路径.类属性名"
             FinanceJson financeJsonInfo = new FinanceJson();
Cow cow = new Cow();
cow.setCowName("coco");
cow.setCowWWW("cowww");
FinanceJsonUtil.addNodeByPojo(financeJsonInfo, "terminal.cow", cow);
System.out.println(financeJsonInfo.toString());
输出:
{
"terminal" : {
"cow" : {
"cowName" : "coco",
"cowWWW" : "cowww"
}
}
}

2. 获取节点
初始化数据:
         FinanceJson financeJson = new FinanceJson();
FinanceJsonUtil.addNode(financeJson, "terminal.uid", new StringNode("dasd"));
FinanceJsonUtil.addNode(financeJson, "terminal.gid", new StringNode("g213"));
FinanceJsonUtil.addNode(financeJson, "terminal.pid", new StringNode("p213"));
Cow cow = new Cow();
cow.setCowName("coco");
cow.setCowWWW("cowww");
FinanceJsonUtil.addNodeByPojo(financeJson, cow);
System.out.println(financeJson.toString()); 数据格式:
{
"terminal" : {
"uid" : "dasd",
"gid" : "g213",
"pid" : "p213"
},
"cow" : {
"cowName" : "coco",
"cowWWW" : "cowww"
}
}

获取节点和属性:

             // 获取节点
ValueNode terminalNode = financeJson.getProperty("terminal");
System.out.println("节点json:\n" + terminalNode.toJson());
//获取某个属性
String uid = terminalNode.firstChild("uid").toString();
System.out.println("uid属性值:" + uid);
//按照路径获取某个属性
String gid = financeJson.getProperty("terminal.gid").toString();
System.out.println("gid属性值:" + gid);

输出:

节点json:
{
"uid" : "dasd",
"gid" : "g213",
"pid" : "p213"
}
uid属性值:dasd
gid属性值:g213
3. 注意的地方
(1) 可以作为RPC调用参数
(2) 不可以用于qmq传输

FinanceJson的更多相关文章

随机推荐

  1. AutoTransformHandler

    public static ObservableCollection<F> Transform<T, F>(List<T> target) where F : ne ...

  2. Requested registry access is not allowed(不允许所请求的注册表访问权)

    尝试创建自定义事件日志时,将会收到“Requested registry access is not allowed(不允许所请求的注册表访问权)”错误消息 EventLog.CreateEventS ...

  3. 很震撼的HTML5视频播放器,电影院的感觉

    效果很震撼!有电影院的感觉了.呵呵. 看了下代码,依然是 在一个canvas里嵌入<video>然后getImageData 点击这里查看效果 代码: var canvas = docum ...

  4. WPF ListView 选中问题

    WPF ListView 选中问题  摘自:http://www.cnblogs.com/BBHor/archive/2013/04/28/VisualTreeHelper-PreviewMouseD ...

  5. ASP.Net中Session失效的一种编程思路

    在写一个客户的B/S结构应用程序时,突然发现一个技巧,不知道是否是MS的一个BUG,给相关的有研究的朋友原先考虑写一个检查Session的类,Session失效后,必须转向登陆页面,可每一个调用该类的 ...

  6. 继续寻找app开发的技术方案

    大概12年下半年开始,才有app开发已经来到身边的感觉. 但也一直只是感觉,没想到自己得亲身上阵. 由于要一个人做(帮朋友倒腾倒腾),而且要跨平台,而且前后台都要弄,而且时间有限. 最终选了web方式 ...

  7. jsp中自定义Taglib案例

    一.使用TagSupport类案例解析 1.自定义Tag使用jdbc连接mysql数据库 1.1定义标签处理器类 package com.able.tag; import java.sql.Conne ...

  8. [moka学习笔记]yii2.0 rules的用法(收集,不定期更新)

    public function rules(){ return [ ['title','required','message'=>'标题不能为空'], ['title','string','mi ...

  9. DOM笔记整理及应用实例

    一.前言 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model).HTML DOM 模型被构造为对象的树 通过可编程的对象模型,JavaScript 获得了足够的 ...

  10. Webform(简单控件、复合控件)

    一.简单控件: 1.label控件 <asp:Label ID="Label1" runat="server" Text="账 号:" ...