JSON在AJAX架构得到广泛应用,是一种有应用前途的数据格式。 问题两个:(1)在前台应用JSON数据非常方便,但是在后台,比如如下JSON数据
[{"ID":"3","Order":"9"},{"ID":"1",Order":"6"},{"ID":"2",Order":"8"}]
希望在后台基于ID的大小进行排序,得到如下JSON数据
[{"ID":"1","Order":"6"},{"ID":"2",Order":"8"},{"ID":"3",Order":"9"}]
有没有高效的实现代码或方法(2)希望大家能给出后台操作其他JSON格式数据的代码,越多越好了,大家多交流;愿大家上网开心,工作顺利
[{"ID":"3","Order":"9"},{"ID":"1",Order":"6"},{"ID":"2",Order":"8"}]
希望在后台基于ID的大小进行排序,得到如下JSON数据
[{"ID":"1","Order":"6"},{"ID":"2",Order":"8"},{"ID":"3",Order":"9"}]
有没有高效的实现代码或方法(2)希望大家能给出后台操作其他JSON格式数据的代码,越多越好了,大家多交流;愿大家上网开心,工作顺利
static T Deserialize <T>(string json)
{
T obj = Activator.CreateInstance <T>();
using (MemoryStream ms =
new MemoryStream(Encoding.UTF8.GetBytes(json)))
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer =
new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());
return (T)serializer.ReadObject(ms);
}
}
再排序
//
引用
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
//实现
[DataContract]
public sealed class FooDef
{
[DataMember(Name = "ID", IsRequired = true)]
public string ID { get; set; } [DataMember(Name = "Order", IsRequired = true)]
public string Order { get; set; }
} class Program
{
static void Main(string[] args)
{ DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(List<FooDef>));
string bar = "[{\"ID\":\"3\",\"Order\":\"9\"},{\"ID\":\"1\",\"Order\":\"6\"},{\"ID\":\"2\",\"Order\":\"8\"}]";
MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(bar));
List<FooDef> entities = (List<FooDef>)json.ReadObject(stream);
stream.Close();
//newEntities 就是排序好的
var newEntities = from l in entities orderby l.ID select l;
}
}
System.ServiceModel.Web;在工程中引用 不是代码内
//最后改了下using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;namespace ConsoleApplication1
{
[DataContract]
public sealed class FooDef
{
[DataMember(Name = "ID", IsRequired = true)]
public string ID { get; set; } [DataMember(Name = "Order", IsRequired = true)]
public string Order { get; set; }
} class Program
{
static void Main(string[] args)
{
string bar = "[{\"ID\":\"3\",\"Order\":\"9\"},{\"ID\":\"1\",\"Order\":\"6\"},{\"ID\":\"2\",\"Order\":\"8\"}]";
List<FooDef> newEntities = Deserialize<FooDef>(bar);
var s = from l in newEntities orderby l.ID select l;
}
static List<T> Deserialize<T>(string str)
{
DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(List<T>));
using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(str)))
{
List<T> entities = (List<T>)json.ReadObject(stream);
stream.Close();
return entities;
}
}
}
}
http://litjson.sourceforge.net/然后定义两个个实体类YourClass{string id,string order}、ListClass,ListClass包含一个属性:List<YourClass> YourLists
把字符串jsonText稍微处理一下:
{
List:[{"ID":"3","Order":"9"},{"ID":"1",Order":"6"},{"ID":"2",Order":"8"}]
}
然后就可以使用方法litJson.JsonMapper.ToObject<ListClass> = new litJson.JsonMapper.ToObject<ListClass>(jsonText);将字符串转换成对象后面的操作就是对List进行排序了,这个不用说了吧
把字符串jsonText稍微处理一下:
{
YourLists:[{"ID":"3","Order":"9"},{"ID":"1",Order":"6"},{"ID":"2",Order":"8"}]
} 字符串里的属性名称要和实体类定义的一致