无法为 Azure 函数使用 JSON 数组
Unable to use JSON array for Azure Function
我的 azure 函数有以下 JSON 输入,但在反序列化对象后无法将其传入
{
"name": [{
"SiteName": "Site1",
"SiteUrl": "https://site1.com/"
},
{
"SiteName": "Site2",
"SiteUrl": "https://site2.com/"
},
]
}
反序列化后,我得到的计数为 2,但内部数组值我没有使用以下代码进行反序列化
string requestBody = new StreamReader(req.Body).ReadToEnd();
dynamic data = JsonConvert.DeserializeObject(requestBody);
var Root = data["name"].ToObject<List<Constant>>();
常量 class 声明如下
class Constant
{
public Dictionary<string, string> name { get; set; }
}
解决方案 1:反序列化为对象列表
模型class应该是:
public class Site
{
public string SiteName { get; set; }
public string SiteUrl { get; set; }
}
反序列化如下:
var Root = data["name"].ToObject<List<Site>>();
解决方案 2:反序列化为字典
var Root = data["name"].ToObject<List<Dictionary<string, string>>>();
尝试像下面这样创建 class。
class JsonResponse
{
public List<Constant> name { get; set; }
}
class Constant
{
public string SiteName { get; set; }
public string SiteUrl { get; set; }
}
并尝试使用 JsonConvert.DeserializeObject<JsonResponse>(requestBody)
反序列化响应。
string requestBody = new StreamReader(req.Body).ReadToEnd();
JsonResponse data = JsonConvert.DeserializeObject<JsonResponse>(requestBody);
var Root = data.name;
我的 azure 函数有以下 JSON 输入,但在反序列化对象后无法将其传入
{
"name": [{
"SiteName": "Site1",
"SiteUrl": "https://site1.com/"
},
{
"SiteName": "Site2",
"SiteUrl": "https://site2.com/"
},
]
}
反序列化后,我得到的计数为 2,但内部数组值我没有使用以下代码进行反序列化
string requestBody = new StreamReader(req.Body).ReadToEnd();
dynamic data = JsonConvert.DeserializeObject(requestBody);
var Root = data["name"].ToObject<List<Constant>>();
常量 class 声明如下
class Constant
{
public Dictionary<string, string> name { get; set; }
}
解决方案 1:反序列化为对象列表
模型class应该是:
public class Site
{
public string SiteName { get; set; }
public string SiteUrl { get; set; }
}
反序列化如下:
var Root = data["name"].ToObject<List<Site>>();
解决方案 2:反序列化为字典
var Root = data["name"].ToObject<List<Dictionary<string, string>>>();
尝试像下面这样创建 class。
class JsonResponse
{
public List<Constant> name { get; set; }
}
class Constant
{
public string SiteName { get; set; }
public string SiteUrl { get; set; }
}
并尝试使用 JsonConvert.DeserializeObject<JsonResponse>(requestBody)
反序列化响应。
string requestBody = new StreamReader(req.Body).ReadToEnd();
JsonResponse data = JsonConvert.DeserializeObject<JsonResponse>(requestBody);
var Root = data.name;