
C#中的JSON解析器介绍
JSON(JavaScript Object Notation)解析是独立于语言的,它是一种轻量级的数据交换格式,可以自我描述,并且易于理解。JSON解析器是XML的替代品,它以结构文本格式表示对象,数据以键值对存储。JSON文件名的扩展名是.json。JSON类允许将对象序列化为JSON文本,也允许将JSON文本反序列化为对象,内置支持UTF-8。
语法
让我们看看JSON(JavaScript Object Notation)的语法,如下。
- Jobject.Parse()方法是一个对象类方法,该方法用于将JSON字符串解析为C#的对象。基于键值,它解析了字符串的数据,然后通过使用键值检索数据。对于解析方法,其语法如下。
Jobject.Parse(jsonStringName);
- 另一种解析JSON字符串的方法是使用JsonConvert.DeserializeObject(),它属于JsonConvert类。让我们看看下面的语法。
JsonConvert.DeserilizeObject<CustomClassName>(JsonStringName);
- 使用JavaScriptSerialize()来解析JSON字符串。Deserialize()方法,这个方法只适用于.NET的最新版本,让我们看看下面的语法。
JavaScriptSerializer(). Deserialize<CustomClassName>(jsonString);
JSON解析器如何在C#中工作?
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它很容易被人类写入和读取,并被机器解析后生成。它提供了高性能,较少的内存空间分配。有许多第三方控件以JSON字符串格式从客户端向服务器端提供数据,必须将JSON字符串转换为合适的对象来访问数据,第三方控件如Kendo UI网格等。
Jobject.Parse()方法是一个对象类方法,该方法用于将JSON字符串解析为C#的对象,在此,有UTF-8的内置支持。基于键值,它解析了字符串的数据,最后,它通过使用键值检索数据。让我们看看下面的JSON解析格式和工作流程。
{
string jsonString = @"{
'user_FirstName':'Peter',
'user_LastName':'Paul'
}";
By using the JSON parsing method we can convert and retrieve as follows,
var getResult = JObject.Parse(jsonString);
这样我们就可以检索到数据了。
另一种解析JSON字符串的方法是使用JsonConvert.DeserializeObject(),该方法属于JsonConvert类,名为JsonConvert.DeserializeObject(),用于将JSON字符串转换成C#对象。这些对象是由JSON字符串创建的。这个方法使用的格式如下。
JsonConvert.DeserilizeObject<CustomClassName>(JsonStringName);
要检索这个方法的结果,我们可以像这样使用,创建一个带有属性First_Name和Last_Name的UserDetails类,输入JSON格式的数据,如下所示
var get_jsonString = @"{'First_Name': 'Peter', 'Last_Name': 'Paul'}";
通过这种方式转换数据,如下所示。
var result = JsonConvert.DeserializeObject < UserDetails > (get_jsonString);
使用JavaScriptSerialize()解析JSON字符串。Deserialize()方法,这个方法只适用于.NET的后期版本,这个方法不适用于早期版本,为此我们可以使用前两个方法将JSON字符串转换成C#对象。这个方法使用的格式如下。
JavaScriptSerializer().Deserialize<CustomClassName>(jsonString);
To create the class with UserDetails as follows,
class UserDetails
{
public string userName { get; set; }
public int userAge { get; set; }
}
要输入用户的详细信息,以便将JSON转换为c#对象,如下所示。
var input_json = @"{""name"":""Peter Paul"",""age"":49}";
通过使用下面的serializer()方法将JSON转换为c#对象,如下所示。
var resultObject = new JavaScriptSerializer().Deserialize<UserDetails>(input_json);
.NET框架支持对JSON进行去序列化和序列化的类,通过使用我们使用的DataContractJsonSerializer。通过使用下面的代码,我们可以对JSON对象进行反序列化,为了使用这个方法,我们需要一些程序,如下所示。
应用程序必须有System.Runtime.Serialization库的引用。
整个类应该有DataContract,属性必须有DataMember属性。
[DataContract] public class USerDetails
{
[DataMember] public string First_Name {
get; set;
}
[DataMember] public string Last_Name {
get; set;
}
}
- 对于序列化和反序列化,我们需要使用WriteObject方法来序列化一个对象,使用ReadObject方法来反序列化JSON对象。
string get_json = "{ \"First_Name\":\"Smith\",\"LastName\":\"Rio\" }";
DataContractJsonSerializerjsonSerializer = newDataContractJsonSerializer(typeof(USerDetails));
Json.NET是工作环境的最佳框架。Json.NET是最好的工作环境。JSON有许多好处和特点,如下所示。
- 它是JSON序列化器在.NET对象和JSON之间的灵活转换。
- LINQ到JSON的JSON可以手动写入和读取。
- 它的工作速度比.NET快,它有内置的高性能数据的JSON序列器。
- 易于读取JSON和写缩进。
- JSON和XML之间的转换很容易。
实例
程序#1
Jobject.Parse()方法是一个对象类方法,该方法用于将JSON字符串解析为C#的对象。基于键值,它解析了字符串的数据,最后,它通过使用键值检索数据。让我们看看下面的JSON解析实现。
using System;
using Newtonsoft.Json.Linq;
namespace JSONParsing
{
public class Parsing
{
public static void Main(string[] args)
{
string jsonString = @"{
'user_FirstName':'Peter',
'user_LastName':'Paul'
}";
//Using the JSON-parse method here
var getResult = JObject.Parse(jsonString);
Console.WriteLine("\n\tUsing JSON-Parse Method");
Console.WriteLine(string.Concat("\n\tDisplaying User First and Last Name: ", getResult["user_FirstName"], " " + getResult["user_LastName"], "."));
}
}
}
输出

程序#2
使用JsonConvert.DeserializeObject()来解析JSON字符串,该方法属于JsonConvert类,名为JsonConvert.DeserializeObject(),用于将JSON字符串转换为C#对象。这些对象是由JSON字符串创建的。
using System;
using Newtonsoft.Json;
namespace JSONParse_Program
{
public class UserDetails
{
public string First_Name
{
get; set;
}
public string Last_Name
{
get; set;
}
}
public class Parsing
{
public static void Main(string[] args)
{
var get_jsonString = @"{'First_Name': 'Peter', 'Last_Name': 'Paul'}";
//Use of the method
var result = JsonConvert.DeserializeObject < UserDetails > (get_jsonString);
Console.WriteLine("JSON-Parse Method\n");
Console.WriteLine(string.Concat("\nDisplaying First and Last Name, ", result.First_Name, " " + result.Last_Name, "."));
}
}
}
输出

结论
在这篇文章中,我已经解释了JSON解析器的用法,通过使用这些方法,我们可以在C#程序中解析JSON,也可以提取值。