将 JSON 字符串解析为对象的最简单的 C# 函数是啥? [关闭]

     2023-04-12     57

关键词:

【中文标题】将 JSON 字符串解析为对象的最简单的 C# 函数是啥? [关闭]【英文标题】:What is the simplest C# function to parse a JSON string into an object? [closed]将 JSON 字符串解析为对象的最简单的 C# 函数是什么? [关闭] 【发布时间】:2011-02-21 00:45:48 【问题描述】:

将 JSON 字符串解析为对象并显示它的最简单的 C# 函数是什么(C# XAML WPF)? (例如具有 2 个数组的对象 - arrA 和 arrB)

【问题讨论】:

【参考方案1】:

只需使用Json.NET 库。它可以让你非常轻松地解析 Json 格式的字符串:

JObject o = JObject.Parse(@"

    ""something"":""value"",
    ""jagged"":
    
        ""someother"":""value2""
    
");

string something = (string)o["something"];

文档:Parsing JSON Object using JObject.Parse

【讨论】:

Json.NET 是一个经过测试并证明非常灵活和高效的专业库。强烈推荐。 据我所知,这是允许通用对象类型解析的唯一选项,其他答案绑定到某个对象类型。 很好的解决方案。虽然对我来说像这样JToken something = o["something"]; 如果您需要为一件事解析 json,有时拉入外部库似乎很愚蠢。在这里使用 DataContractJsonSerializer 是一种更实用的方法。这就像引入 EntityFramework,因为您的应用程序确实执行了一些数据库查询。 使用System.Text.Json,我们可以做到JsonDocument doc = JsonDocument.Parse(JsonString);【参考方案2】:
DataContractJsonSerializer serializer = 
    new DataContractJsonSerializer(typeof(YourObjectType));

YourObjectType yourObject = (YourObjectType)serializer.ReadObject(jsonStream);

您也可以使用JavaScriptSerializer,但DataContractJsonSerializer 应该能够更好地处理复杂类型。

奇怪的是,JavaScriptSerializer 曾经被弃用(在 3.5 中),然后由于 ASP.NET MVC(在 3.5 SP1 中)而复活。这绝对足以动摇我的信心并引导我使用DataContractJsonSerializer,因为它很难用于 WCF。

【讨论】:

我会在框架生命周期早期构建的序列化程序上使用它。 你必须先添加一个引用然后using System.Runtime.Serialization.Json;【参考方案3】:

我想这就是你想要的:

JavaScriptSerializer JSS = new JavaScriptSerializer();
T obj = JSS.Deserialize<T>(String);

【讨论】:

我需要添加对System.Web.Extensions 的引用才能看到这个 T 必须是特定类型,不是吗?我不能只解析一个随机的 JSON 字符串。【参考方案4】:

您应该创建一个表示 JSON 键的结构(如果您确切知道它),然后您可以轻松地将 JSON 字符串反序列化到您的结构中。在我的示例中,我反序列化了来自 Google Cloud 消息服务器的响应:

class templateResponse

    public String multicast_id;
    public String success;
    public String failure;
    public String canonical_ids;
    public Result[] results;

    public class Result
    
        public String message_id;
        public String registration_id;
        public String error;
    ;

传入的 JSON 是:

"\"multicast_id\":7400896764380883211,\"success\":1,\"failure\":0,\"canonical_ids\":0,\"results\":[\"message_id\":\"0:1351777805148960%39895cf0f9fd7ecd\"]"

所以,使用

templateResponse result = new JavaScriptSerializer().Deserialize<templateResponse>(json);

你会得到反序列化的result对象

【讨论】:

示例 JSON 和相关类很有帮助,谢谢。【参考方案5】:

我会回应 Json.NET 库,它可以将 JSON 响应转换为 XML 文档。使用 XML 文档,您可以轻松地使用 XPath 查询并提取您需要的数据。我觉得这很有用。

【讨论】:

将 JSON 字符串转换为 C# 对象

】将JSON字符串转换为C#对象【英文标题】:ConvertJSONStringToC#Object【发布时间】:2022-01-0119:26:01【问题描述】:尝试将JSON字符串转换为C#中的对象。使用一个非常简单的测试用例:JavaScriptSerializerjson_serializer=newJavaScriptSerializer();obje... 查看详情

将 JSON 字符串转换为 C# 对象

】将JSON字符串转换为C#对象【英文标题】:ConvertJSONStringToC#Object【发布时间】:2011-06-0409:44:26【问题描述】:尝试将JSON字符串转换为C#中的对象。使用一个非常简单的测试用例:JavaScriptSerializerjson_serializer=newJavaScriptSerializer();obje... 查看详情

将 freemarker 对象呈现为 JSON 的最简单方法是啥?

】将freemarker对象呈现为JSON的最简单方法是啥?【英文标题】:WhatistheeasiestwaytorenderafreemarkerobjectasJSON?将freemarker对象呈现为JSON的最简单方法是什么?【发布时间】:2016-02-2116:06:10【问题描述】:我在freemarker中有一个数据结构,... 查看详情

将 URL 转换为 C# 字符串中的超链接的最简单方法?

】将URL转换为C#字符串中的超链接的最简单方法?【英文标题】:EasiestwaytoconvertaURLtoahyperlinkinaC#string?【发布时间】:2010-09-0703:40:57【问题描述】:我正在使用TwitterAPI并希望将所有URL转换为超链接。您想出的最有效的方法是什么... 查看详情

如何使用 C# 将 JSON 对象解析为类

】如何使用C#将JSON对象解析为类【英文标题】:HowtoparseaJSONobjectintoclassusingC#【发布时间】:2021-07-0303:02:24【问题描述】:我的Json对象"returnStatus":"code":"0200","status":"SUCCESS","message":"Theoperationwassuccessful.","requestTime":"2021040714111208 查看详情

如何解析会导致非法 C# 标识符的 JSON 字符串?

】如何解析会导致非法C#标识符的JSON字符串?【英文标题】:HowcanIparseaJSONstringthatwouldcauseillegalC#identifiers?【发布时间】:2014-08-2313:32:06【问题描述】:我一直在使用NewtonSoftJSONConvert库来解析JSON字符串并将其转换为C#对象。但是... 查看详情

解析 JSON 响应的最简单方法

】解析JSON响应的最简单方法【英文标题】:EasiestwaytoparseJSONresponse【发布时间】:2016-03-0617:34:26【问题描述】:有没有什么简单的方法可以在c#下面解析JSOn"type":"text","totalprice":"0.0045","totalgsm":"1","remaincredit":"44.92293","messages":["status... 查看详情

如何将“带有换行符的字符串数据”解析为 JSON 对象?

】如何将“带有换行符的字符串数据”解析为JSON对象?【英文标题】:HowtoParse"stringdatawithnewlinesymbol"toJSONObejct?【发布时间】:2022-01-1810:08:30【问题描述】:我将使用AWS提供的APIGateway和Lambda创建一个简单的加密服务器。AP... 查看详情

C# JSON 解析结果似乎为空

...个问题,我可以打印原始JSON响应,但不能打印单个建议字符串本身。标签仅用于调试目的。任何帮助将不胜感激!:)publicvoidSearch_Click(o 查看详情

将 C# 对象转换为 JSON 或 Javascript 对象

...shtml中,我可以通过调用Json.Encode(obj)从该对象转换而来的字符串字符串是:["Name":"CASE_A","Val 查看详情

在数据流 2.x 中将 TableRow 转换为 JSON 格式字符串的最简单方法?

】在数据流2.x中将TableRow转换为JSON格式字符串的最简单方法?【英文标题】:EasiestwaytoconvertaTableRowtoJSON-formattedString,indataflow2.x?【发布时间】:2018-06-1214:40:41【问题描述】:没有编写自己的函数来完成它,将数据流2.x管道内的Tabl... 查看详情

将 JSON 字符串转换为 JSON 对象 c#

】将JSON字符串转换为JSON对象c#【英文标题】:ConvertJSONStringtoJSONObjectc#【发布时间】:2014-04-0418:41:18【问题描述】:我有这个字符串存储在我的数据库中:str=""context_name":"lower_bound":"value","upper_bound":"value","values":["value1","valueN"]"这... 查看详情

js将json字符串转换为json对象的方法解析

例如:JSON字符串:varstr1=‘{"name":"cxh","sex":"man"}‘; JSON对象:varstr2={"name":"cxh","sex":"man"};一、JSON字符串转换为JSON对象要使用上面的str1,必须使用下面的方法先转化为JSON对象://由JSON字符串转换为JSON对象varobj=eval(‘(‘+str+‘)‘)... 查看详情

如何将字符串的缩进级别解析为 JSON 对象?

】如何将字符串的缩进级别解析为JSON对象?【英文标题】:HowdoIparsetheindentationlevelofastringintoaJSONObject?【发布时间】:2022-01-1703:07:41【问题描述】:我希望能够将一个字符串解析为一个JSON对象,类似这样(文本可以是任何东西,... 查看详情

将 C# 对象转换为 Json 对象

...rceAPI,并创建一个应用程序。现在我将C#对象序列化为Json字符串,但我需要它是一个对象。这是我的C#对象以及伴随序列化。Customerapplication=newCustomerProductDe 查看详情

js将json字符串转换为json对象的方法解析

JSON字符串:varstr1=‘{"name":"cxh","sex":"man"}‘; JSON对象:varstr2={"name":"cxh","sex":"man"};要使用上面的str1,必须使用下面的方法先转化为JSON对象://由JSON字符串转换为JSON对象varobj=eval(‘(‘+str+‘)‘)orvarobj=str.parseJSON()然后,就可以这... 查看详情

将 Json 转换为 Xml 的最简单方法

...题讨论】:也许你应该在你的UI上阅读JavaScript中的JSON并解析它。(并相应地显示)。如果你必须看到her 查看详情

c#将任意对象快速转换为json

...都是通过循环List<T>中的对象向StringBuilder对象中Apped字符串生成json,而这样一来这次项目岂不是得写死人,想了想不能冒这个风险,因此觉得写一个通用的Model转json的方法如下:///<summary>///转换T为json///</summary 查看详情