0

我正在构建一个简单的 Twitter 应用程序。我最初想使用 XML,但在我做了一些搜索后发现 JSON 更好更快,所以我决定使用它。

然而,在搜索了几个小时后,我找不到一个使用 .net 库作为 JSON 的单一 hello world 教程。所有教程都指出将第三方库用于 JSON。由于我不能使用.net 之外的任何东西,有人会给我一些关于如何开始的花絮。

具体System.Runtime.Serialization.Json在.net4.0上使用

4

4 回答 4

1

对于使用通用对象的任意 Json 的一种反序列化方法,请参阅我的答案:

C# 反序列化动态 JSON

对于序列化,我对 ToJson 的 ServiceStack.Text 实现很满意。

https://github.com/ServiceStack/ServiceStack.Text

如果您在他们的网站上使用一些工具,您也可以找到预编译的二进制文件以进行下载。不要害怕 ServiceSTack 所做的所有其他事情(除非它可以帮助您——您只需要 ServiceStack.Text 命名空间)。

于 2012-11-23T05:36:01.660 回答
0

我在 JSON 方面没有更多经验,但目前我正在处理 JSON 序列化和反序列化,而不使用任何第三方 JSON 库。请按照以下步骤操作:

  1. 创建用于序列化任何对象的通用实用程序:使用 System; 使用 System.Collections.Generic;使用 System.Linq;使用 System.Web;使用 System.Web.Script.Serialization;

    namespace Test.Utility
    {
        public class CommonUtility
        {
            public static JavaScriptSerializer javaScriptSerializer = new    JavaScriptSerializer();
    
            public static string SerializeJson(object o)
            {
                return javaScriptSerializer.Serialize(o);
            }
        }
    }
    
  2. 然后在要序列化的地方添加 Test.Utility 引用:

    using Test.Utility;
    
  3. 然后为 JSON 序列化编写代码:

    var Info = new
    {
        TeamCode = TeamCodeTxt.Text,
        TeamName = TeamNameTxt.Text
    };
    

    字符串 jsonSerializedStr=CommonUtility.SerializeJson(Info);

  4. 编写反序列化代码:

    class TestInfo
    {
        public TeamCode{set;get;}
        public TeamName{set;get;}
    }
    Info objInfo=new Info();
    objInfo=serializer.Deserialize<TestInfo>(Info);
    
于 2012-11-23T06:43:54.903 回答
0

使用 System.Runtime.Serialization.Json

[DataContract]
[Serializable]
public class SuperObj
{
  [DataMember]
  public string Foo { get; set; }

  [DataMember]
  public string Bar { get; set; }

  [DataMember]
  public int Baz { get; set; }

  [DataMember]
  public DateTime Qux { get; set; }
}

可以使用序列化为字符串

var serializer = new DataContractJsonSerializer(typeof(SuperObj));

using (var stream = new MemoryStream())
{
  serializer.WriteObject(stream, obj);
  var jsonString = Encoding.UTF8.GetString(stream.ToArray());
  Console.WriteLine(jsonString);
}

该字符串可以反序列化回一个对象

var serializer = new DataContractJsonSerializer(typeof(SuperObj));

using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
  var obj2 = (SuperObj)serializer.ReadObject(stream);
  Console.WriteLine("SuperObj");
  Console.WriteLine(obj2.Foo);
  Console.WriteLine(obj2.Bar);
  Console.WriteLine(obj2.Baz);
  Console.WriteLine(obj2.Qux);
}

就像其他人说的那样,第三方库往往更好(我使用过 ServiceStack.Text 和 Json.Net)

于 2012-11-23T06:50:59.913 回答
0

转到此链接MSDN JSON

但与 Internet 上可用的其他库相比,此库不包含更多功能。另外,它们是开源的。因此,如果您改变主意,请
首先确定要使用的库,例如:

1. JSON.NET
2. JSON-Sharp
3. Newtonsoft.JSON
和许多其他库(JSON 库列表
然后找到根据图书馆的教程。

我更喜欢 Newtonsoft,因为它有一些附加功能。
还要考虑查看每个库的规范,因为它们为某些数据类型(例如 dateTime)提供略有不同的实现(如果您不使用跨平台通信,例如 java 中的生产者和 C# 中的消费者,反之亦然)。

于 2012-11-23T06:01:38.503 回答