我正在构建一个简单的Twitter应用程序。我原本想使用XML,但在我做了一点搜索后发现JSON更好更快,所以我决定使用它。
然而,在搜索了几个小时后,我找不到一个使用.net库为JSON的单一hello world教程。所有教程都指出使用JSON的第三方库。因为我不能使用.net中的任何东西,所以有人会给我一些关于如何开始的花絮。
特别是在.net4.0上使用System.Runtime.Serialization.Json
答案 0 :(得分:1)
对于使用泛型对象的任意Json的一个反序列化方法,请参阅我的答案:
对于序列化,我对ToJson的ServiceStack.Text实现感到满意。
https://github.com/ServiceStack/ServiceStack.Text
如果你在他们的网站上工作一下,你也可以找到预编译的二进制文件来下载。不要害怕ServiceSTack所做的所有其他事情(除非它可以帮助你 - 你只需要ServiceStack.Text命名空间)。
答案 1 :(得分:0)
转到此链接MSDN JSON
但是,与互联网上提供的其他库相比,此库不包含更多功能。另外,它们是开源的。所以如果你改变主意,请通过as
首先确定您要使用的库,例如:
1. JSON.NET
2. JSON-Sharp
3. Newtonsoft.JSON
和许多其他人(List of JSON libraries)
然后根据图书馆找到教程。
我更喜欢Newtonsoft,因为它有一些额外的功能
还要考虑查看每个库的规范,因为它们为某些数据类型(如dateTime)提供了稍微不同的实现(如果您不使用跨平台通信,例如java中的生产者和C#中的使用者,则反之亦然)。
答案 2 :(得分:0)
我对JSON没有更多经验,但目前我正在进行JSON序列化和反序列化,而不使用任何第三方JSON库。请按照以下步骤操作:
创建一个用于序列化任何对象的通用实用程序: 使用系统; 使用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);
}
}
}
然后在要序列化的位置添加Test.Utility引用:
using Test.Utility;
然后编写JSON序列化代码:
var Info = new
{
TeamCode = TeamCodeTxt.Text,
TeamName = TeamNameTxt.Text
};
String jsonSerializedStr = CommonUtility.SerializeJson(Info);
编写反序列化代码:
class TestInfo
{
public TeamCode{set;get;}
public TeamName{set;get;}
}
Info objInfo=new Info();
objInfo=serializer.Deserialize<TestInfo>(Info);
答案 3 :(得分: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)