操作JSON格式数据

powerchuangwai 2010-01-04 10:27:22
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格式数据的代码,越多越好了,大家多交流;

愿大家上网开心,工作顺利。。。

...全文
915 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
wat_sun 2011-12-05
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xuyiazl 的回复:]
C# code

//
引用
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;




C# code

//实现
[DataContract]
public sealed class FooDef
{
[DataMemb……
[/Quote]

不错 很好,这样就解决了,谢谢了
小纯洁001 2011-08-19
  • 打赏
  • 举报
回复
学习!!!
powerchuangwai 2010-01-05
  • 打赏
  • 举报
回复
楼上的哥们,,,还是不太懂,,俺是新手,,,多指数。。

如果不下载插件,该如何实现???

请给出具体代码。。。感谢。。
staywithc 2010-01-05
  • 打赏
  • 举报
回复
修改下:
把字符串jsonText稍微处理一下:
{
YourLists:[{"ID":"3","Order":"9"},{"ID":"1",Order":"6"},{"ID":"2",Order":"8"}]
}

字符串里的属性名称要和实体类定义的一致
staywithc 2010-01-05
  • 打赏
  • 举报
回复
你也可以直接下载一个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进行排序了,这个不用说了吧
powerchuangwai 2010-01-05
  • 打赏
  • 举报
回复
感谢12楼,,只是好像不行呀,,,
powerchuangwai 2010-01-04
  • 打赏
  • 举报
回复
感谢楼上详细的代码,,我看看。。
xuyiazl 2010-01-04
  • 打赏
  • 举报
回复

//最后改了下

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;
}
}
}
}

xuyiazl 2010-01-04
  • 打赏
  • 举报
回复
要使用Json

需要引用

System.ServiceModel;
System.ServiceModel.Web;

在工程中引用 不是代码内
xuyiazl 2010-01-04
  • 打赏
  • 举报
回复

//
引用
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;
}
}
powerchuangwai 2010-01-04
  • 打赏
  • 举报
回复
//
powerchuangwai 2010-01-04
  • 打赏
  • 举报
回复
先转成实体类,到List <T>再排序

可以给个示例吗?
yinmo1988 2010-01-04
  • 打赏
  • 举报
回复
没看懂。。
powerchuangwai 2010-01-04
  • 打赏
  • 举报
回复
//
powerchuangwai 2010-01-04
  • 打赏
  • 举报
回复
楼上的哥们,可以给出一个示例吗??简单的示例,,,谢谢了。。。
wuyq11 2010-01-04
  • 打赏
  • 举报
回复
先转成实体类,到List<T>再排序
xuyiazl 2010-01-04
  • 打赏
  • 举报
回复
先转成List在用List排序。。。
powerchuangwai 2010-01-04
  • 打赏
  • 举报
回复
楼上的哥们,,俺没有看懂,,
wuyq11 2010-01-04
  • 打赏
  • 举报
回复
定义实体类
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);
}
}
再排序

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧