如何在jquery中创建一个字典的JSON数组?

我在html中有一个treeview结构。 它只有节点和子节点。 它不可能有另一个子级。 此树视图的一个function是用户可以重新排列节点和子节点。

当用户保存它时,我会将它发送到我的c#页面,并在服务器中读取新订单并保存。 顺序由JSON对象中对象的顺序决定。

我认为JSON对象看起来像这样(例子):

[ {id: 4, items: [5, 6, 7]}, {id: 8, items: [9, 10, 11, 12, ...]}, ... ] 

所以这将是一系列字典。 对于每个字典,它将具有两个键, id将是节点的id号,并且items将是子节点的id的数组。

重要的是,顺序与我添加到数组的顺序相同,因此当我遍历它们时,它在插入它们时仍然处于相同的顺序。 如果它像字典那么这不会是真的。

我很确定我可以使用jquery创建这个字典数组。 但是如何将其转换为JSON对象? 这可能吗?

在c#中,我怎么能读到这个?

_真的没有看到问题。 如果您正在使用jQuery,那么您正在使用Javascript。 JSON对象一个Javascript对象,因此以下内容在jQuery中有效。 它会将对象序列化为字符串。

 var data = [ {id: 4, items: [5, 6, 7]}, {id: 8, items: [9, 10, 11, 12, ...]}, ... ]; $.post({ data: data, // ... }); 

如果需要字符串,JSON.Stringify()会将对象转换为字符串。 (我没有意识到它是原生的Javascript)。 从来没有因为我一直在使用jQuery ajax。

在C#中解析此数据的一种简单方法是使用诸如JSON.Net之类的库。 你可以解析一个json字符串并遍历它,而不必实际镜像你拥有的实际C#类的JSON结构,但这对于大量的Json来说会有所帮助。

 using Newtonsoft.Json; using Newtonsoft.Json.Linq; static void Main(string[] args) { string json = "{ items: [ {id: 4, items: [5, 6, 7]}, {id: 8, items: [9, 10, 11, 12]}, {id: 5, items: [9, 10, 11, 12]} ] }"; JToken root = JToken.Parse(json); JToken items = root["items"]; var results = from element in items select new { Id = element["id"].Value(), Items = element["items"].Select(x => x.Value()) }; foreach (var r in results) { Console.WriteLine("Id: {0}, Items: {1}", r.Id, string.Join(", ", r.Items)); } } 

打印到控制台:

 Id: 4, Items: 5, 6, 7 Id: 8, Items: 9, 10, 11, 12 Id: 5, Items: 9, 10, 11, 12 

我喜欢使用的另一个方便的实用程序是Json2C# ,它为我提供了基础。 但是我提供的示例向您展示了在发送HTTP Post请求后检索数据的轻量级快速方法。

命名空间

 System.Web.Script.Serialization; 

问题1

但是如何将其转换为JSON对象? 这可能吗?

回答

 JavaScriptSerializer jss = new JavaScriptSerializer(); var jsonObjList = jss .Serialize(objList); 

问题2

在c#中,我怎么能读到这个?

回答

模型

 public class Object1 { public int id {get; set;} public List items {get; set;} } 

逻辑

 string jsonData = @"[ {id: 4, items: [5, 6, 7]}, {id: 8, items: [9, 10, 11, 12, ...]}, ... ]"; JavaScriptSerializer jss = new JavaScriptSerializer(); var objList = jss.Deserialize>(jsonData);