c# - C#将字符串列表转换为对象
问题描述
如何将字符串列表转换为对象?
var flattenList = string.Join(",", jsonVars);
var convJsonVars = JsonConvert.SerializeObject(flattenList);
convJsonVars = "{" + convJsonVars + "}";
var emailData = JsonConvert.DeserializeObject<object>(convJsonVars);
在我序列化 flattenList 之后,这些是结果:
"\"tenant_background_color\":\"#c41211\",\"tenant_logo_link\":\"https://imagelink.com\",\"tenant_font_color\":\"#FFFFFF\",\"tenant_name\":\"TNAME\",\"recipient_name\":\"User One\",\"login_link\":\"https://localhost:44330/\",\"verification_link\":\"https://localhost:44330/Link?Key=7b6c12fe-7658-45c5-a5c9-df9900231c6b-f7ea4ae9-3037-4dc5-98dd-e34a33770bb1\""
但是,当我尝试将其反序列化为对象类型并将其提交给 Sendgrids api 时,我总是收到错误消息,即我正在向它们传递字符串而不是对象类型。
编辑:
这就是 jsonVars 现在的样子:
"\"tenant_background_color\":\"#c41211\""
它是一个字符串列表
解决方案
当您对 json 字符串进行反灭菌时,反序列化程序会在 json 中查找键并填充与 json 对象键同名的字段。基本模型object
没有它自己的任何字段,也许您正在寻找一个Dictionary<string,object>
或一个列表expandoObject
:
public static void Main()
{
var productos = "[{\"codigo\":\"Servilleta\",\"cantidad\":2},{\"codigo\":\"Papelhig\",\"cantidad\":1}]";
var listProductos = JsonConvert.DeserializeObject<List<ExpandoObject>>(productos);
foreach (dynamic prod in listProductos)
{
Console.WriteLine("Código: " + prod.codigo + " - Cantidad: " + prod.cantidad);
}
}
推荐阅读
- c# - 从派生类获取基类受保护的属性
- android - React Native 构建失败无法 HEAD /android-jsc/maven-metadata.xml'
- authentication - 如何在 Jmeter 中获取用于登录的 csrf 令牌
- flutter - 如果我不能 100% 确定 Flutter 应用程序的安全性,我应该发布它吗?
- python - UTC 日期时间问题 - 如何适合冒号 - 时间数据“2021-03-11 09:30:01-05:00”与格式“%Y%m%d %H:%M:%S %z”不匹配'
- typescript - 是否可以根据泛型类型定义泛型函数?
- python - 如何使用 Kivy 正确读取图像像素?
- r - Texreg 表不完整
- arrays - 如何使用 REST API 删除多条记录
- django - django 从 github 到 PC 没有 requirements.txt