c# - 从字符串 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 行中。
我的目标不是通过尽可能快地获取单个值来解析整个对象。
问题
如何获取特定文本字符串后面的第一个数字?
解决方案
你不需要反序列化整个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
推荐阅读
- spring - 库项目中的 EntityScan 破坏 SpringBootApplication 自动配置
- angular - Angular 和 SVG:如何动态加载自定义组件?
- ios - 如何在 Flutter 应用程序中显示原生 iOS 视图?
- c - 在 ls 中对齐列
- r - R - 用 gdistance 模拟地表水流的过渡函数
- java - Spring Junit 测试因 NullPointerException 而失败
- ios - 具有许多 UIView 的单例服务
- angularjs - 我的控制台中的 Angularjs $injector:unpr 错误
- java - 使用 java swing Graphics g 在 JPanel 中绘图
- javascript - 想要在值为零时显示一小部分 js 条形图