使用System.Json进行非Silverlight项目?

时间:2009-04-22 04:34:28

标签: c# .net json

有关如何做的任何想法?如果不可能,那么C#的JSON库是什么?

6 个答案:

答案 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)

答案 5 :(得分:0)

另一种选择是使用Mono的System.Json实现, 我能够通过一些小的改动将它向后移植到C#2.0。

您只需从here下载我的C#2.0项目。