繁体   English   中英

C# 将字符串列表转换为 object

[英]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"]

转换列表<string>列出<object>在 C#<div id="text_translate"><p> 我有一个看起来像这样的字符串列表:</p><pre> var rawData = new List<string>(){ "EUR/USD;123", "EUR/GBP;321", "BTC/USD;2321"};</pre><p> 我有以下结构:</p><pre> public class Data { public string instrument { get; set; } public string positions { get; set; } }</pre><p> 我的目标是有一个字符串数据列表,在';'上分开 char 并转换为对象列表。</p><pre> var processedData = new List<Data>(); // processedData[0] ( instrument = EUR/USD, positions = 123 ) // processedData[1] ( instrument = EUR/GBP, positions = 321) // processedData[2] ( instrument = BTC/USD, positions = 2321)</pre><p> 你知道我该怎么做吗?</p></div></object></string>

[英]Convert List<string> to List<object> in C#

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM