日期:2014-05-18  浏览次数:21150 次

怎样用C#把JSON数据转换为list或数组
JSON代码:

[{"cId":2,"cName":"\u767d\u841d\u535c","amount":26,"price":"17"},{"cId":3,"cName":"\u80e1\u841d\u535c","amount":21,"price":"21"},{"cId":4,"cName":"\u7389\u7c73","amount":7,"price":"23"},{"cId":14,"cName":"\u897f\u74dc","amount":7,"price":"29"},{"cId":5,"cName":"\u571f\u8c46","amount":3,"price":"24"},{"cId":1,"cName":"\u8349\u8393","amount":427,"price":"27"},{"cId":10,"cName":"\u5357\u74dc","amount":303,"price":"30"},{"cId":11,"cName":"\u82f9\u679c","amount":1,"price":"24"},{"cId":23,"cName":"\u77f3\u69b4","amount":4,"price":"54"},{"cId":18,"cName":"\u6843\u5b50","amount":3,"price":"40"},{"cId":15,"cName":"\u9999\u8549","amount":9,"price":"32"},{"cId":13,"cName":"\u8461\u8404","amount":7,"price":"47"},{"cId":26,"cName":"\u67da\u5b50","amount":1,"price":"58"},{"cId":27,"cName":"\u83e0\u841d","amount":5,"price":"62"},{"cId":19,"cName":"\u6a59\u5b50","amount":27,"price":"41"}]


我用Newtonsoft.Json.dll,可以成功将该数据解析成List ,但是里面像":"\u767d\u841d\u535c",这种unicode无法转换为中文,请高手指点。
这个是我用Newtonsoft.Json的代码
List<Shangdian> thislist = new List<Shangdian>();
thislist = JavaScriptConvert.DeserializeObject<List<Shangdian>>(wb.Document.Body.InnerHtml);

其实我用的是VS2008,3.5也自带了json的解析类,但网上找到的都是将json解析成一个类,并没有将json数组解析成list<T>,也请高手指点下,怎样用vs2008自带的json,将上面这段json代码转换成list<T>或者对象数组




------解决方案--------------------
测试了下 没问题啊 2.txt放的是你贴的数据.

VS2008 
引用System.ServiceModel.Web.dll
引用System.Runtime.Serialization.dll



private void Form1_Load(object sender, EventArgs e)
{
string _JsonText = System.IO.File.ReadAllText(@"C:\2.TXT");

List<Test> _Test = new List<Test>();

DataContractJsonSerializer _Json = new DataContractJsonSerializer(_Test.GetType());
byte[] _Using = System.Text.Encoding.UTF8.GetBytes(_JsonText);
System.IO.MemoryStream _MemoryStream = new System.IO.MemoryStream(_Using);
_MemoryStream.Position = 0;

_Test =(List<Test>)_Json.ReadObject(_MemoryStream);

}

public class Test
{
public int cId = 0;
public string cName = "";
public int amount = 0;
public string price = "";
}