比如:
var ary = [[75,'亚洲','中国','China',2],[650,'欧洲','英国','ENGLAND',2]]
上面是javascript的一个数组对象,并不是严格的json格式
C#有没有办法解析 [[75,'亚洲','中国','China',2],[650,'欧洲','英国','ENGLAND',2]]
这个内容啊 原本是想用json格式定义类型转换的,但感觉不大可能。
可以的,方法参数可以用Newtonsoft.dll中的JObject类型,或者用dymic类型
1.首先定义一个转换的类 public class ExtendModel { public string Id{ get; set; } //Id public string area{ get; set; } //地区 public string country{ get; set; } //国家中文 public string countryen{ get; set; } //国家英文 public int sort { get; set; } //排序 } 2.用的时候这么用 List<ExtendModel> _model= new List<ExtendModel>(); _model= new JavaScriptSerializer().Deserialize<ExtendModel>(Json串儿);
试试吧!
我自己研究出来了 我都说了我的数据没有属性名 也就是最精简的JSON格式
要用JOBJECT JARRAY就可以搞定了 也不复杂
一楼方式适合对象。思路基本上是对的。
先在js中江ary转换为JSON字符串,然后再扔到C#中构造一个实体反序列化。
当然可以,一楼已给出范例。
只是,这个范例不通用而已。
下面给你一个代码,应该能帮你解惑了:
using System; using System.Collections.Generic; using System.Text; using System.Web.Script.Serialization; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { List<object> list1 = InitList(5, 4, new object[] { 1, 2, "aa", "cc", 'd' }); StringBuilder builder1 = new StringBuilder(); new JavaScriptSerializer().Serialize(list1, builder1); var list2 = new JavaScriptSerializer().Deserialize<List<object>>(builder1.ToString()); StringBuilder builder2 = new StringBuilder(); new JavaScriptSerializer().Serialize(list2, builder2); var list3 = new JavaScriptSerializer().Deserialize<List<object>>("[[75,'亚洲','中国','China',2],[650,'欧洲','英国','ENGLAND',2]] "); StringBuilder builder3 = new StringBuilder(); new JavaScriptSerializer().Serialize(list3, builder3); Console.WriteLine(builder1); Console.WriteLine(); Console.WriteLine(builder2); Console.WriteLine(); Console.WriteLine(builder3); } private static List<Object> InitList(int maxLength, int maxDeep, object[] values) { if(maxLength == 0) { return null; } List<object> list = new List<object>(); int deep; int length; var random = new Random(); for (int i = 0; i < maxLength; i++) { deep = random.Next(maxDeep); if(deep > 0) { length = random.Next(1, maxLength + 1); list.Add(InitList(length, deep, values)); } else { list.Add(values[random.Next(values.Length * 10000) / 10 % values.Length]); } } return list; } } }
具体的,你可以再参考下内存数据,我因为不能上传图片,就略过了。