[英]C# Convert list of string into object
如何将字符串列表转换为 Object?
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\""
但是,当我尝试将其反序列化为 object 类型并将其提交给 Sendgrids api 时,我总是收到错误消息,即我向它们传递的是字符串而不是 Object 类型。
编辑:
这就是 jsonVars 现在的样子:
"\"tenant_background_color\":\"#c41211\""
它是一个字符串列表
当您对 json 字符串进行反序列化时,反序列化器会在 json 中找到键,并填充与 json object 键同名的字段。 基础 model 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);
}
}
鉴于您没有 object 但只有需要连接并括在大括号中的属性,因此您通过调用JsonConvert.SerializeObject
不必要地使事情复杂化。 所以:
var convJsonVars = "{" + string.Join(",", jsonVars) + "}";
现在您可以通过两种在您的情况下等效的方式反序列化它:
var emailData = JsonConvert.DeserializeObject<object>(convJsonVars);
或者
var emailData = JObject.Parse(convJsonVars);
在这两种情况下,返回的 object 都是JObject
类型,因为您在 Json 反序列化期间没有提供架构。 您仍然可以使用索引器访问emailData
属性,即emailData["tenant_background_color"]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.