没有 JSON 属性 名称的 JSON 响应的对象命名
Object naming for JSON response with no JSON property name
我正在连接到 API,格式为 returns json:
[
{
"id":3810,
"name":"productName",
"slug":"",
"permalink":"",
"date_created":"2022-03-18T14:10:09",
.
.
.
我已将我的根对象设置为:
public sealed class ProductRoot
{
public List<ProductItem> Products { get; set; }
}
还有我的 ProductItem
class 作为:
public sealed class ProductItem
{
[JsonPropertyName("id")]
public long? Id { get; set; }
[JsonPropertyName("name")]
public string? Name { get; set; }
[JsonPropertyName("slug")]
public string? Slug { get; set; }
[JsonPropertyName("permalink")]
public string? Permalink { get; set; }
[JsonPropertyName("date_created")]
public DateTime? DateCreated { get; set; }
...
当我尝试反序列化响应时,它似乎在根目录下失败了。
ProductRoot = JsonSerializer.Deserialize<ProductRoot>(result);
错误:
System.Text.Json.JsonException: 'The JSON value could not be converted to Api.Entities.ProductRoot. Path: $ | LineNumber: 0 | BytePositionInLine: 1.'
问题:如果没有 json 属性 进入 JSON 并且它只是返回一个 set/list/array 项目,你叫什么有关系吗?根对象?这会影响 json 的反序列化方式吗?有谁知道如果上面没有与根对象冲突为什么会失败?
您应该直接反序列化为 List。
此致,
如果你的对象是:
public sealed class ProductRoot
{
public List<ProductItem> Products { get; set; }
}
那么你的 json 应该是这样的:
{
"Products": [
{
"id":3810,
"name":"productName",
"slug":"",
"permalink":"",
"date_created":"2022-03-18T14:10:09",
.
.
.
我正在连接到 API,格式为 returns json:
[
{
"id":3810,
"name":"productName",
"slug":"",
"permalink":"",
"date_created":"2022-03-18T14:10:09",
.
.
.
我已将我的根对象设置为:
public sealed class ProductRoot
{
public List<ProductItem> Products { get; set; }
}
还有我的 ProductItem
class 作为:
public sealed class ProductItem
{
[JsonPropertyName("id")]
public long? Id { get; set; }
[JsonPropertyName("name")]
public string? Name { get; set; }
[JsonPropertyName("slug")]
public string? Slug { get; set; }
[JsonPropertyName("permalink")]
public string? Permalink { get; set; }
[JsonPropertyName("date_created")]
public DateTime? DateCreated { get; set; }
...
当我尝试反序列化响应时,它似乎在根目录下失败了。
ProductRoot = JsonSerializer.Deserialize<ProductRoot>(result);
错误:
System.Text.Json.JsonException: 'The JSON value could not be converted to Api.Entities.ProductRoot. Path: $ | LineNumber: 0 | BytePositionInLine: 1.'
问题:如果没有 json 属性 进入 JSON 并且它只是返回一个 set/list/array 项目,你叫什么有关系吗?根对象?这会影响 json 的反序列化方式吗?有谁知道如果上面没有与根对象冲突为什么会失败?
您应该直接反序列化为 List
此致,
如果你的对象是:
public sealed class ProductRoot
{
public List<ProductItem> Products { get; set; }
}
那么你的 json 应该是这样的:
{
"Products": [
{
"id":3810,
"name":"productName",
"slug":"",
"permalink":"",
"date_created":"2022-03-18T14:10:09",
.
.
.