json操作工具-LitJson
LitJSON是json生成与读取的操作工具,使用很方便并且网上还能找到源码。下面是使用LitJSON的例子:
一、生成json:实例化一个JsonData,然后按照List数组的方式向里面填。
JsonData data2 = new JsonData();
data2["name"] = "peiandsky";//一直这样写,是简单的json键值对
data2["info"] = new JsonData();//这样new出来的是嵌套json对象
data2["info"]["sex"] = "male";
data2["info"]["age"] = 28;
string ss = data2.ToJson();
//ss的值是:{"name":"peiandsky","info":{"sex":"male","age":28}}
二、解析json
String str = "{'name':'cyf','id':10,'items':[{'itemid':1001,'itemname':'hello'},{'itemid':1002,'itemname':'hello2'}]}";
JsonData data = JsonMapper.ToObject(str);
//取到name的值
string name_str = data["name"].ToString();//值为cyf
//取到第二个itemid
int itemid_sec = (int)data["items"][1]["itemid"];//值为1002,注意数据类型转换
//还可以这么取json数组的值
foreach (JsonData item in data["items"])
{
int count = item.Count;
int itemid_str = (int)item["itemid"];
string itemname_str = (string)item["itemname"];
}
三、生成json:用JsonMapper.ToJson()方法生成json
//声明一个排序的Dictionary,好处是生成的json已经按照字典排序了
SortedDictionary<string, object> m_values = new SortedDictionary<string, object>();
m_values["name"] = "hyp";
m_values["age"] = 26;
m_values["male"] = "man";
string json = JsonMapper.ToJson(m_values);
//输出的值是:{"age":26,"male":"man","name":"hyp"}
//如果不用字典的方式,还可以用实体类代替字典,使用方法是一样的。
//实体类解析例如:Player player2 = JsonMapper.ToObject<Player>(json); Player是实体类
四、生成json数组
JsonData jdata = new JsonData();
jdata["data"] = new JsonData();
jdata["data"].SetJsonType(JsonType.Array);//设置键data的值是数组
SortedDictionary<string, object> dic = new SortedDictionary<string, object>();
dic["proname"] = "北京";
dic["proid"] = 1;
string arr = JsonMapper.ToJson(dic);//生成一个新的json数组,作为data的数组元素
jdata["data"].Add(arr);//添加1个数组元素,到原来的json中
jdata["data"].Add(arr);//继续添加数组元素。实际用时,这里用for循环添加
string s = jdata.ToJson();//转换为json数组
//s输出值是:{"data":["{\"proid\":1,\"proname\":\"北京\"}","{\"proid\":1,\"proname\":\"北京\"}"]}
//然后替换掉反斜杠和多余的引号就可以了
五、生成json数组
JsonWriter writer = new JsonWriter();
JsonData JD = new JsonData();
writer.WriteArrayStart();
JD["username"] = "LiLei";
JD["phone"] = "13800138000";
JD["city"] = "北京";
writer.Write(JD.ToJson());
JD["username"] = "HanMeiMei";
JD["phone"] = "13800138001";
JD["city"] = "北京朝阳";
writer.Write(JD.ToJson());
writer.WriteArrayEnd();
string json = writer.ToString();
//输出:["{\"username\":\"LiLei\",\"phone\":\"13800138000\",\"city\":\"北京\"}","{\"username\":\"HanMeiMei\",\"phone\":\"13800138001\",\"city\":\"北京朝阳\"}"]
//这种方式输出的json数组不带数组名称,使用时须去掉多余的反斜杠和引号。
六、判断json中是否含有某个字段,用判断字典里是否含有某个key的方式
public bool CheckParam(JsonData Json, string KeyName)
{
bool res = false;
//判断是否有key
if (((IDictionary)Json).Contains(KeyName))
{
//string valuestr = (string)Json[KeyName];
res = true;
}
return res;
}
json操作工具-LitJson的更多相关文章
- XML数据 JSON数据 LitJSON 数据 的编写和解析 小结
用XML生成如下数据<?xml version="1.0"encoding="UTF-8"?><Transform name="My ...
- [C#技术] .NET平台开源JSON库LitJSON的使用方法
一个简单示例: String str = "{’name’:’cyf’,’id’:10,’items’:[{’itemid’:1001,’itemname’:’hello’},{’itemi ...
- (转).NET平台开源JSON库LitJSON的使用方法
一个简单示例: String str = "{’name’:’cyf’,’id’:10,’items’:[{’itemid’:1001,’itemname’:’hello’},{’itemi ...
- .NET平台开源JSON库LitJSON的使用方法
下载地址:LitJson.dll下载 一个简单示例: String str = "{'name':'cyf','id':10,'items':[{'itemid':1001,'itemnam ...
- 4种解决json日期格式问题的办法
4种解决json日期格式问题的办法 开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后将得到一个很长的数字表示日期数据,如下 ...
- 解决json日期格式问题的3种方法
这篇文章主要介绍了解决json日期格式问题的3种方法 ,需要的朋友可以参考下 开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后 ...
- json日期格式问题的办法
//json日期转换 格式(2015-01-01) <input class="easyui-datebox" name="sbdj_txtShebaoka_Lin ...
- LitJSON使用
地址:http://lbv.github.io/litjson/docs/quickstart.html LitJSON Quickstart Guide Introduction Quick Sta ...
- Json数据解析在Unity3d中的应用
最近做项目过程中因为Json文件名写错了一个字母Unity报错,找错误找到半夜,当时为了验错,写了一个小Demo,正好借此总结一下Json. 1.什么是Json JSON(JavaScript Obj ...
随机推荐
- Linux命令 改变文档权限及所有者
Linux命令 改变文档权限及所有者 chgrp :改变档案所属群组 chown :改变档案拥有者 chmod :改变档案的权限, SUID, SGID, SBIT等等的特性 chgrp说明及范例 [ ...
- 黄聪:VS2010中“新建项目”却没有“解决方案”节点,如何调出来
工具->选项->项目和解决方案 把"总是显示解决方案"打 √ 就ok 了
- linux性能监控——CPU、Memory、IO、Network
一.CPU 1.良好状态指标 CPU利用率:User Time <= 70%,System Time <= 35%,User Time + System Time <= 70%. 上 ...
- 自增自减 a++,++a,a--,--a
1.自增(++)自减(--)运算符是一种特殊的算术运算符,在算术运算符中需要两个操作数来进行运算,而自增自减运算符是一个操作数. 实例: public class selfAddMinus{ publ ...
- sklearn中的predict与predict_proba的区别(得到各条记录每个标签的概率(支持度))
假定在一个k分类问题中,测试集中共有n个样本.则: predict返回的是一个大小为n的一维数组,一维数组中的第i个值为模型预测第i个预测样本的标签: predict_proba返回的是一个n行k列的 ...
- 杂项-DB:内存数据库
ylbtech-杂项-DB:内存数据库 内存数据库,顾名思义就是将数据放在内存中直接操作的数据库.相对于磁盘,内存的数据读写速度要高出几个数量级,将数据保存在内存中相比从磁盘上访问能够极大地提高应用的 ...
- 性能监控之Spotlight
有和同事探讨一些技术监控类软件,谈到Spotlight,临时记一下. 下载地址https://pan.baidu.com/s/1HB9xd9LmOR-MOk8FIGBm-A 常规安装模式,下载解压安装 ...
- 第三章 Istio基本介绍
3.1 Istio的核心组件及其功能 Istio总体分两部分:控制面和数据面. 数据面(sidecar):sidecar通过注入的方式和业务容器共存于一个pod,会劫持业务容器的流量,并接受控制面组件 ...
- Asp.net 的cookie问题
写代码的发现的小问题 如果写入cookie的时候指定了domin域名 那么删除的时候必须也指定domin域名才行,即使你先读取了这个已经存在的cookie,但是还是要指定domin才能删除 /// & ...
- OD 实验(四) - 去除 NAG 窗口的几种方法
程序: 运行 弹出一个窗口,说要注册 点击确定,到主窗口 关闭主窗口 然后弹出提醒注册的对话框 逆向程序 用 OD 打开程序 GetModuleHandleA 获取程序模块的句柄,程序在内存中的基址 ...