您的位置:首页 > Web前端 > JavaScript

C#关于json字符串解析的封装

2015-06-17 20:00 766 查看
本文的目标是实现C#语言对json字符串解析的封装,使用到的动态链接库是:Newtonsoft.Json。

下面叙述封装的过程:

1.首先是构造Json解析对象JsonDecode:

private JObject jo;//json对象
private string jsonString;//json字符串
public JsonDecode(string str)
{
this.jsonString = str;
try
{
this.jo = JObject.Parse(str.Trim());
Console.WriteLine("init jsondecode");
}
catch (Exception e)
{
Console.WriteLine(e.Message);
Console.WriteLine("json base error!");
this.jo = JObject.Parse("\"MsgType\":\"error\"");
}
}


由上面的代码可以看到,JsonDecode对象有2个成员变量,一个是JObject对象,这是我们要进行的操作对象;一个是json字符串,这是构造JsonDecode对象所需要传进来的待解析字符串。

2.根据不同的字符串进行解析,得到所需要的内容:

比如:{success:true,message:”123”},解析的方法如下:

public Boolean getResult()
{
Boolean result = GetJObject()["success"].Value<Boolean>();
return result;
}

public string getMsg()
{
string result = GetJObject()["message"].Value<string>();
return result;
}


还有比如上类型更为复杂的字符串比如:

{
"num": 2,
"child": [
{
"date": {
"date": 15,
"day": 1,
"hours": 0,
"minutes": 0,
"month": 5,
"nanos": 0,
"seconds": 0,
"time": 1434297600000,
"timezoneOffset": -480,
"year": 115
},
"addName": "admin",
"addr": "北京",
"name": "李",
"phone": "123",
"id": 106
},
{
"date": {
"date": 15,
"day": 1,
"hours": 0,
"minutes": 0,
"month": 5,
"nanos": 0,
"seconds": 0,
"time": 1434297600000,
"timezoneOffset": -480,
"year": 115
},
"addName": "admin",
"addr": "山东",
"name": "张",
"phone": "123",
"id": 107
}
]
}


解析代码如下:

1.首先定义一个Person对象,方便对数据进行保存:

public class Person
{
public string name;
public string phone;
public string addr;
public int id;
}


2。接着进行解析:

public List<Person> getPerson()
{
JToken listData = GetJObject()["child"];
List<Person> result = new List<Person>();
foreach (JToken jt in listData)
{
Person person = new Person();
person.name = jt.SelectToken("name").ToString();
person.phone = jt.SelectToken("phone").ToString();
person.addr = jt.SelectToken("addr").ToString();
person.id = int.Parse(jt.SelectToken("id").ToString());
result.Add(person);
}
return result;
}


以上就完成了对字符串的解析。

如果是对内部的date进行解析的话,通过以下代码:

JToken listDate=jt.SelectToken("date");
foreach(JToken jt in listDate){
jt.SelectToken("date");
jt.SelectToken("day");
jt.SelectToken("month");
jt.SelectToken("minutes");
}


以上,便是对基本的json的字符串进行解析,更多负责的类型都是在这基础之上的~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: