我有一个API,预期返回结果如下(其中包含从Cosmos DB获取的数据)
public class ConsumerResponse
{
public string ObjectId { get; set; }
public string ConsumerType { get; set; }
public object Data { get; set; }
}
我使用邮差来测试这个API。下面是返回CustomerResponse对象
的API函数[HttpGet]
[Route("{container}/{consumerType}/{objectId}")]
[ProducesResponseType(typeof(ConsumerResponse), (int)HttpStatusCode.OK)]
[ProducesResponseType(typeof(ErrorResponse), (int)HttpStatusCode.BadRequest)]
[ProducesResponseType(typeof(ErrorResponse), (int)HttpStatusCode.InternalServerError)]
public async Task<ConsumerResponse> Get(string container , string consumerType, string objectId)
{
var response = await _messageProcessingService.GetAsync(container, consumerType, objectId);
return response;
}
当我调试代码时,我可以看到映射到CustomerResponse类中的每个属性的所有有效数据。"Data"是嵌套对象。然而,当我在Postman中调用这个API时,"Data"对象变为空,如下所示
{
"objectId": "8bea9894-8685-46e4-8637-5614e624b05e",
"consumerType": "Patient",
"data": {
"name": [
[
[]
],
[
[]
],
[
[]
],
[
[]
]
],
"gender": [],
"birthDate": [],
"countryCode": [],
"isActive": [],
"consumerConsent": [],
"accountStatus": [
[
[
[]
]
]
]
}
}
但是如果我改变" data "的数据类型作为字符串,然后我得到的结果如下
{
"objectId": "8bea9894-8685-46e4-8637-5614e624b05e",
"consumerType": "Patient",
"data": "{rn "name": {rn "use": "Official",rn "surname": "Dope",rn "firstName": "Johny",rn "prefix": "Mr."rn },rn "gender": "Male",rn "birthDate": "1991-02-02",rn "countryCode": "IN",rn "isActive": false,rn "consumerConsent": true,rn "accountStatus": [rn {rn "startDate": "2021-09-08T09:27:21.1946786+10:00"rn }rn ]rn}"
}
当我使用对象数据类型时,我如何获得嵌套结构的值?
是
所有值都可以作为字符串数据类型因为它得到键值对所以你可以点击这里转换为json点击这里
在Azure函数中,您需要添加对NewtonSoft.JSON
的引用
Newtonsoft.Json
库是一个特例。您可以通过在脚本文件的顶部添加以下内容来包含它:
#r "Newtonsoft.Json"
using Newtonsoft.Json;
,并添加以下代码行来获取json嵌套值。
var response = await client.GetAsync("<url>");
var json = await response.Content.ReadAsStringAsync();
var obj= JsonConvert.DeserializeObject<"Type">(json);
请参阅此处获取更多信息链接1 &链接2