c# - 如何从复杂的 JSON 格式文件 C# 中获取特定信息
问题描述
我试图从一个复杂的 JSON 文件中获取所有“方法名”“全名”和属性 [] 值的列表,我试图实现一个基本模型来读取顶层,但所有内容都返回为 null;
public class TestRun
{
public string @id { get; set; }
public string @name { get; set; }
public string @fullname { get; set; }
public string testcasecount { get; set; }
public TestSuite[] TestSuite { get; set; }
}
public class TestSuite
{
}
public class ScriptModel
{
public TestRun[] TestRun { get; set; }
}
JSON看起来像这样;从根级别有大量嵌套的“test-suites”和“test-fixtures”
"test-suite": {
"@type": "TestSuite",
"@id": "0-1030",
"@name": "Example__Exampledll",
"@fullname": "Example",
"@runstate": "Runnable",
"@testcasecount": "24",
"test-suite": {
"@type": "TestSuite",
"@id": "0-1031",
"@name": "Features",
"@fullname": "Payments_Regression.Features",
"@runstate": "Runnable",
"@testcasecount": "24",
"test-suite": [
{
"@type": "TestSuite",
"@id": "0-1033",
"@name": "PRE",
"@fullname": "Payments_Regression.Features",
"@runstate": "Runnable",
"@testcasecount": "16",
"test-suite": [
{
"@type": "TestFixture",
"@id": "0-1015",
"@name": "Outwards",
"@fullname": "Example_Outwards",
"@classname": "Example_Dll_Example_Outwards",
"@runstate": "Runnable",
"@testcasecount": "8",
"properties": {
"property": [
{
"@name": "Description",
"@value": "Smoke"
},
{
"@name": "Category",
"@value": "PREPRODUCTION"
},
{
"@name": "Category",
"@value": "Payment"
}
]
},
"test-case": [
{
"@id": "0-1017",
"@name": "TestCaseNameIWantToCapture",
"@fullname": "fullnameexample",
"@methodname": "MethodNameToCapture",
"@classname": "ClassNametoCapture",
"@runstate": "Runnable",
"@seed": "1767458888",
"properties": {
"property": {
"@name": "Description",
"@value": "PropertyValueiWouldLikeToCapture."
}
}
},
解决方案
您使用特殊符号@
它不会更改变量名称,此符号有时用于使用变量名称等关键字var @object = "sample"
你需要使用JsonProperty
属性
public class TestRun
{
[JsonProperty("@id")]
public string Id { get; set; }
[JsonProperty("@name")]
public string Name { get; set; }
[JsonProperty("@fullname")]
public string FullName { get; set; }
[JsonProperty("@testcasecount")]
public string TestCaseCount { get; set; }
[JsonProperty("test-suite")]
public TestSuite[] TestSuite { get; set; }
}
推荐阅读
- hyperlink - MS Edge PDF 查看器是否会去除适用于 Windows 10 版本 1909 的 IE 中的 PDF 链接?
- java - 自 Andriod 11 以来应用程序活动上方的黑色死区
- python - 将多个值包装在单个 JSON 中并存储在模型中 - Django
- c# - 列出当前目录中某个文件夹中的某些项目
- python - 在 python tkinter 中制作游戏计时器的问题
- c - 在另一个结构中构造 tm 时间
- javascript - 将 GET 对象推送到数据返回中的空对象
- serial-port - 如何使用 Delphi 编写代码以通过 RS232 接收数据计数?
- arrays - 如何制作解密字符串的ruby方法?
- c - 纸牌问题,C 函数有问题