gpt4 book ai didi

JSON 数组正在转换为通用列表,但未转换为通用集合。为什么?

转载 作者:行者123 更新时间:2023-12-04 16:09:19 24 4
gpt4 key购买 nike

我正在从客户端 Web 应用程序向 asp.net webapi 发送一个 Json 数组。
例如,

{
"SurveyId":3423,
"CreatorId":4235,
"GlobalAppId":34,
"AssociateList":[
{"AssociateId":4234},
{"AssociateId":43},
{"AssociateId":23423},
{"AssociateId":432}
],
"IsModelDirty":false,
"SaveMode":null
}

这里的关联列表是一个 JSON 数组,
通常它会自动序列化为 List<> 对象。

使用以下代码,我将响应发布到 WebApi
public IEnumerable<Associate> Post(ResponseStatus responseStatus)
{
return this.responsestatusrepository.ResponseStatusCheck(responseStatus);
}

ResponseStatus 类如下所示。
public class ResponseStatus : AppBaseModel
{
public int SurveyId { get; set; }
public int CreatorId { get; set; }
public int GlobalAppId { get; set; }
public List<Associate> AssociateList { get; set; }
}

作为代码分析更正的一部分,我已将 List<> 更改为 Collection<>。
即, public Collection<Associate> AssociateList { get; set; }
但是当我们使用集合而不是列表时,它总是得到一个空值。这有什么具体原因吗?

最佳答案

好的,我想我将不得不以间接的方式回答这个问题。
您传递给服务器的是一个对象数组(JSON 格式),但是一旦您开始在 C# 中处理它,对象数组现在被视为单个 C# 对象。在此对象中,您的模型期望其中一个字段是关联集合。

是的,当我使用类似于本例中提到的 JSON 数据时 - 我更喜欢使用 Newtonsofts 的 JOject。

下面是我使用您提供的 JSON 数据制作 C# 对象的方法:

使用您的模型:

public class ResponseStatus
{
public int SurveyId { get; set; }
public int CreatorId { get; set; }
public int GlobalAppId { get; set; }
public Collection<Associate> AssociateList { get; set; }
}

public class Associate
{
public int AssociateId { get; set; }
}

制作了一个接受字符串(JSON 数据)的例程,并返回一个 ResponseStatus 类型的对象:
using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;

---------------------------------------------------------------------

public static ResponseStatus GetResponseStatusObject(string jsonData)
{
JObject jObject = JObject.Parse(jsonData);
return jObject.ToObject<ResponseStatus>();
}

现在,当我调用此方法并传递您提供的完全相同的 JSON 数据时,我得到以下信息:

Breakpoint after method ran

这可能不会直接解决您的问题,但希望在使用 JavaScript/C# 时指导您了解数组/对象序列化的正确方向。

祝你好运!

关于JSON 数组正在转换为通用列表,但未转换为通用集合。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25975205/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com