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格式数据的代码,越多越好了,大家多交流;愿大家上网开心,工作顺利

解决方案 »

  1.   

    定义实体类
    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); 
                } 
            } 
    再排序
      

  2.   

    先转成实体类,到List<T>再排序
      

  3.   

    先转成实体类,到List <T>再排序可以给个示例吗?
      

  4.   


    //
    引用
    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;
            }
        }
      

  5.   

    要使用Json需要引用 System.ServiceModel;
    System.ServiceModel.Web;在工程中引用  不是代码内
      

  6.   


    //最后改了下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;
                }
            }
        }
    }
      

  7.   

    你也可以直接下载一个litJson.DLL。
    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进行排序了,这个不用说了吧
      

  8.   

    修改下:
    把字符串jsonText稍微处理一下: 

      YourLists:[{"ID":"3","Order":"9"},{"ID":"1",Order":"6"},{"ID":"2",Order":"8"}] 
    } 字符串里的属性名称要和实体类定义的一致