代码之家  ›  专栏  ›  技术社区  ›  Patrick

对非Silverlight项目使用System.json?

  •  10
  • Patrick  · 技术社区  · 15 年前

    你知道怎么做吗?如果不可能的话,什么是适合C_的JSON库?

    6 回复  |  直到 6 年前
        1
  •  7
  •   Luke Lowrey    15 年前

    Json.NET 是一个很棒的.NET JSON库。支持LINQ,读/写和转换JSON之间的对象。

        2
  •  15
  •   Richard Fawcett    13 年前

    System.Json 现在可通过以下方式在非Silverlight项目中使用: NuGet (.NET的包管理系统),有望作为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);
    
        3
  •  0
  •   Paul Suart Wes    15 年前

    下面是将任何对象实例序列化为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;
        }
    }
    

    要使用DataContractSerializer,需要添加对System.ServiceModel.Web的引用。

        5
  •  0
  •   vivanov    7 年前

    如果您只是在寻找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;}
    }
    
        6
  •  0
  •   Tal Aloni    6 年前

    另一种选择是使用mono的system.json实现, 我可以把它转换成C 2.0,只做了一些小的改动。

    您可以从下载我的C 2.0项目 here .