首页 > 解决方案 > 从字符串 C# 返回值的一部分

问题描述

我有一个大字符串。在字符串中,有一个数字。我正在尝试使用 C# 返回那个数字

示例字符串:

{ "@odata.context": "https://api.applicationinsights.io/v1/apps/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX/events/$metadata#customEvents", "@ai.messages": [ { "code": "AddedLimitToQuery",
"message": "查询限制为 500 行" } ], "@odata.count": 45, "value": [ { "id": "XXXXXXXXXXXXXXX",
"count": 1..."

我的目标只是将45作为 int 返回。

“@odata.count”之后的第一个数字:

我知道我可以用一些 JSON 来解析整个字符串到对象工具,例如 newtonsoft。但是,在这种情况下,我需要它非常高效,并且不想解析我不需要的数据。

在这种情况下,我知道我需要的数据在 100,000+ JSON 的前 2 或 3 行中。

我的目标不是通过尽可能快地获取单个值来解析整个对象。

问题

如何获取特定文本字符串后面的第一个数字?

标签: c#

解决方案


你不需要反序列化整个json,get Newtonsoft,你需要

using Newtonsoft.Json.Linq;

代码:

var parsedJson = JObject.Parse("your_whole_json");
var result = parsedJson["@odata.count"].ToObject<int>();

通过您在反序列化之前提取了您需要的 Json 的和平,并且您不需要任何新类,如果您需要的值是原始类型,例如您的属性是int. 试试看它是否如你所愿。

如果您的属性嵌套在某个父对象中,您可以这样做parsedJson["parent"]["@odata.count"]。或者如果它在某个列表中,没问题,但你需要先循环遍历结果列表......

检查https://www.newtonsoft.com/json/help/html/SerializingJSONFragments.htm


推荐阅读