在.net中应用Newtonsoft.Json对Json字串进行反序列化

目标:以C#解析一串类似[{},{},{}]承载着数组数据的json字符串。将其反序列化为一个对象列表

运行环境:

NUnit2.4 C# .net2.0

代码:

 

 1 //======================================================================
 2 //
 3 //        Copyright (C) 2008-2009 PCODE TEAM.  All rights reserved.
 4 //
 5 //        CLR Version: 2.0.50727.1433
 6 //        NameSpace: TestPrj
 7 //        FileName: TestJson
 8 //
 9 //        Created by Jy at  2009-3-19 22:17:15
10 //        Email:jy@cjlu.edu.cn
11 //
12 //======================================================================
13 
14 using System;
15 using System.Collections.Generic;
16 using System.Text;
17 using NUnit.Framework;
18 using Newtonsoft.Json;
19 namespace TestPrj
20 {
21     [TestFixture]
22     public class TestJson
23     {
24 
25         [Test]
26         public void testA()
27         {
28             //测试数据
29             string ojson = "[{SZD:'BM',SGX:'=',SZ:'33'},{SZD:'SJ',SGX:'=',SZ:'3333'},{SZD:'SJ',SGX:'=',SZ:'3333'}]";
30 
31             Newtonsoft.Json.JavaScriptArray jsa = (JavaScriptArray)JavaScriptConvert.DeserializeObject(ojson);
32             IList<searchArgs> li = new List<searchArgs>();
33             for (int i = 0; i < jsa.Count; i++)
34             {
35                 JavaScriptObject jso = (JavaScriptObject)jsa[i];
36                 searchArgs sa = new searchArgs(GetJsonStringValue(jso, "SZD"), GetJsonStringValue(jso, "SGX"), GetJsonStringValue(jso, "SZ"));
37                 li.Add(sa);
38             }
39             System.Console.WriteLine(li.Count);
40         }
41         public class searchArgs {
42             public string SZD { getset; }
43             public string SGX { getset; }
44             public string SZ { getset; }
45             public searchArgs(string szd,string sgx,string sz) {
46                 SZD = szd;
47                 SGX = sgx;
48                 SZ = sz;
49             }
50         }
51         public static string GetJsonStringValue(Newtonsoft.Json.JavaScriptObject jso, string key)
52         {
53             try
54             {
55                 return jso[key] == null ? string.Empty : jso[key].ToString();
56             }
57             catch (Exception e)
58             {
59                 return string.Empty;
60             }
61         }
62     }
63 }

 反序列化后的对象列表为li对象。输出反序列化后li对象中包含的对象个数用于核对。

Bingo!

:)

posted on 2009-03-19 23:00  源姜  阅读(5980)  评论(3编辑  收藏  举报

导航