C#中的JSON解析器用法及实例

1,149 阅读4分钟

JSON Parser in C#

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"], "."));
}
}
}

输出

1

程序#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, "."));
}
}
}

输出

2

结论

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