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的更多相关文章

  1. XML数据 JSON数据 LitJSON 数据 的编写和解析 小结

    用XML生成如下数据<?xml version="1.0"encoding="UTF-8"?><Transform name="My ...

  2. [C#技术] .NET平台开源JSON库LitJSON的使用方法

    一个简单示例: String str = "{’name’:’cyf’,’id’:10,’items’:[{’itemid’:1001,’itemname’:’hello’},{’itemi ...

  3. (转).NET平台开源JSON库LitJSON的使用方法

    一个简单示例: String str = "{’name’:’cyf’,’id’:10,’items’:[{’itemid’:1001,’itemname’:’hello’},{’itemi ...

  4. .NET平台开源JSON库LitJSON的使用方法

    下载地址:LitJson.dll下载 一个简单示例: String str = "{'name':'cyf','id':10,'items':[{'itemid':1001,'itemnam ...

  5. 4种解决json日期格式问题的办法

    4种解决json日期格式问题的办法   开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后将得到一个很长的数字表示日期数据,如下 ...

  6. 解决json日期格式问题的3种方法

    这篇文章主要介绍了解决json日期格式问题的3种方法 ,需要的朋友可以参考下 开发中有时候需要从服务器端返回json格式的数据,在后台代码中如果有DateTime类型的数据使用系统自带的工具类序列化后 ...

  7. json日期格式问题的办法

    //json日期转换 格式(2015-01-01) <input class="easyui-datebox" name="sbdj_txtShebaoka_Lin ...

  8. LitJSON使用

    地址:http://lbv.github.io/litjson/docs/quickstart.html LitJSON Quickstart Guide Introduction Quick Sta ...

  9. Json数据解析在Unity3d中的应用

    最近做项目过程中因为Json文件名写错了一个字母Unity报错,找错误找到半夜,当时为了验错,写了一个小Demo,正好借此总结一下Json. 1.什么是Json JSON(JavaScript Obj ...

随机推荐

  1. STL 练习

    makefile ------------------------------------- %.o : %.cpp g++ -g -c $< -o $@ all: t t2 rmXX % : ...

  2. Juicer自定义函数

    首先,先写自定义的方法: function (sex) { ; ; var Range = Max - Min; var Rand = Math.random(); var res = (Min + ...

  3. java代码---------比较随机数的大小---我搞不懂啊

    总结:不习惯你在或不在的时候,赶紧走吧 package com.mmm; import java.util.Random; public class wW { public static double ...

  4. git clone 后使用子分支

    git clone 项目git地址 git branch -a 切换到子分支进行开发 git ckeckout 子分支名称,如:git checkout dev_feature_call git pu ...

  5. [C++]复制构造函数、赋值操作符与隐式类类型转换

    问题:现有类A定义如下: class A{public:        A(int a)                            //构造函数        {              ...

  6. python学习 (三十三) Modules

    1: 方法一: 导入整个模块 import math class ModulesDemo(): def builtin_modules(self): print(math.sqrt()) m = Mo ...

  7. 【UVa】12118 Inspector's Dilemma(欧拉道路)

    题目 题目     分析 很巧秒的一道题目,对着绿书瞎yy一会. 联一下必须要走的几条边,然后会形成几个联通分量,统计里面度数为奇数的点,最后再减去2再除以2.这样不断相加的和加上e再乘以t就是答案, ...

  8. 【BZOJ】1008: [HNOI2008]越狱(组合数学)

    题目 题目描述 监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种.如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 输入输出格式 ...

  9. JAVA for循环语句的循环变量类型问题

    class HalfDollars { public static void main(String [] arguments) { int[] denver = {1_900_000,1_700_0 ...

  10. 多路径路由算法选择(1)——ECMP、WCMP

    不要问为什么,现在的工作转向了网络路由协议的设计. 传统的网络拓朴结构可以形象的表示为树结构,我们称之为“有中心的网络拓扑结构”,简单地认为很多流量请求最终会汇聚到主干网这样的路由中心,才能转发到下一 ...