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

本文的目标是实现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();
            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 getPerson()
        {
            JToken listData = GetJObject()["child"];
            List result = new List();
            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的字符串进行解析,更多负责的类型都是在这基础之上的~

你可能感兴趣的:(java语言,c#语言)