解析 Json 部分工作 - 空子对象
Parse Json works partly - empty sub object
我想解析一个 json 文件。我对简化版本的第一次尝试只取得了部分成功。
简化的 json 结构如下所示
{
"rowCount": 102,
"data": [
{"id": "56", "bezeichnung": "Main Center", "strasse": "foostreet"},
{"id": "34", "bezeichnung": "Side Location", "strasse": "5th aveneue"}
]
}
对于外部 json { "rowCount":102, "data":[]}
我有一个 class jsonEnvelope
看起来像这样
public class JsonEnvelope
{
public int RowCount { get; set; }
public Location[] Data{ get; set; }
}
要解析数组数据中的 json "data":[]
我有 class location
看起来像这样
public class Location
{
public string id;
public string bezeichnung;
public string strasse;
}
我解析 json 的代码如下所示
string jsonString = GetJsonFromFile();
var jsonEnvelope = new JsonEnvelope();
var options = new JsonSerializerOptions();
options.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
jsonEnvelope = JsonSerializer.Deserialize<JsonEnvelope>(jsonString, options);
foreach (Location h in jsonEnvelope.Data)
{
Console.WriteLine(String.Format("{0} in {1}", h.bezeichnung, h.strasse));
}
Console.WriteLine("row count = " + jsonEnvelope.RowCount);
什么在起作用?
行jsonEnvelope.RowCount
有效。数字 102 写入控制台
foreach
不工作 h.bezeichnung
和 h.strasse
的值未写入控制台
问题
在写我的问题时我想通了 - 我会自己简短地回答它
问题是我在 class 位置而不是 属性 中使用了一个字段。
将 class 位置更改为此解决了问题
public class Location
{
public string Id { get; set; }
public string Bezeichnung { get; set; }
public string Strasse { get; set; }
}
请注意:
- .NET 5 或
- System.Text.Json 软件包版本 5 添加到您可以使用
IncludeFields
选项的 Core3.1 项目:
var serializeOptions = new JsonSerializerOptions
{
IncludeFields = true,
};
var o = JsonSerializer.Deserialize<Location>(json, serializeOptions);
我想解析一个 json 文件。我对简化版本的第一次尝试只取得了部分成功。
简化的 json 结构如下所示
{
"rowCount": 102,
"data": [
{"id": "56", "bezeichnung": "Main Center", "strasse": "foostreet"},
{"id": "34", "bezeichnung": "Side Location", "strasse": "5th aveneue"}
]
}
对于外部 json { "rowCount":102, "data":[]}
我有一个 class jsonEnvelope
看起来像这样
public class JsonEnvelope
{
public int RowCount { get; set; }
public Location[] Data{ get; set; }
}
要解析数组数据中的 json "data":[]
我有 class location
看起来像这样
public class Location
{
public string id;
public string bezeichnung;
public string strasse;
}
我解析 json 的代码如下所示
string jsonString = GetJsonFromFile();
var jsonEnvelope = new JsonEnvelope();
var options = new JsonSerializerOptions();
options.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
jsonEnvelope = JsonSerializer.Deserialize<JsonEnvelope>(jsonString, options);
foreach (Location h in jsonEnvelope.Data)
{
Console.WriteLine(String.Format("{0} in {1}", h.bezeichnung, h.strasse));
}
Console.WriteLine("row count = " + jsonEnvelope.RowCount);
什么在起作用?
行jsonEnvelope.RowCount
有效。数字 102 写入控制台
foreach
不工作 h.bezeichnung
和 h.strasse
的值未写入控制台
问题
在写我的问题时我想通了 - 我会自己简短地回答它
问题是我在 class 位置而不是 属性 中使用了一个字段。 将 class 位置更改为此解决了问题
public class Location
{
public string Id { get; set; }
public string Bezeichnung { get; set; }
public string Strasse { get; set; }
}
请注意:
- .NET 5 或
- System.Text.Json 软件包版本 5 添加到您可以使用
IncludeFields
选项的 Core3.1 项目:
var serializeOptions = new JsonSerializerOptions
{
IncludeFields = true,
};
var o = JsonSerializer.Deserialize<Location>(json, serializeOptions);