有关如何做的任何想法?如果不可能,那么C#的JSON库是什么?
答案 0 :(得分:15)
System.Json
现在可以通过NuGet(.Net的包管理系统)在非Silverlight项目中使用,并且有望在vnext中作为核心框架的一部分发布。 NuGet包名为JsonValue。
想象一下,我们在字符串变量json
中有以下JSON:
[{"a":"foo","b":"bar"},{"a":"another foo","b":"another bar"}]
我们可以使用以下代码将值“另一个栏”写入控制台:
using System.Json;
dynamic jsonObj = JsonValue.Parse(json);
var node = jsonObj[1].b;
System.Console.WriteLine(node.Value);
答案 1 :(得分:7)
Json.NET是一个很棒的.NET json库。支持LINQ,读取/写入以及将对象转换为json。
答案 2 :(得分:0)
如果你只是在寻找JSON编码/解码,那么有一个来自Microsoft的官方System.Web扩展库就可以了,很可能你已经有了这个程序集(System.Web.Extensions):
http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx
示例:
using System;
using System.Web.Script.Serialization;
class App
{
static void Main(string[] args = null)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
String sJson = "{\"Name\": \"Your name\"}";
DesJson json = jss.Deserialize<DesJson>(sJson);
Console.WriteLine(json.Name);
}
}
class DesJson {
public string Name {get; set;}
}
答案 3 :(得分:0)
这是一个将任何对象实例序列化为JSON的扩展方法:
public static class GenericExtensions
{
public static string ToJsonString<T>(this T input)
{
string json;
DataContractJsonSerializer ser = new DataContractJsonSerializer(input.GetType());
using (MemoryStream ms = new MemoryStream())
{
ser.WriteObject(ms, input);
json = Encoding.Default.GetString(ms.ToArray());
}
return json;
}
}
您需要添加对System.ServiceModel.Web的引用才能使用DataContractSerializer。
答案 4 :(得分:0)
Scott Guthrie在博客中写到了这个
答案 5 :(得分:0)
另一种选择是使用Mono的System.Json实现, 我能够通过一些小的改动将它向后移植到C#2.0。
您只需从here下载我的C#2.0项目。