【问题标题】:Formatting C# two dimensional array to Javascript将 C# 二维数组格式化为 Javascript
【发布时间】:2023-03-11 08:22:04
【问题描述】:

有没有更简单的方法可以将C#中的二维数组,如[[1, 2, 3],[4, 5, 6]] 转换成一个字符串,上面写着“[[1, 2, 3] ,[4, 5, 6]]",而不是递增每个值并手动添加语法?

我想在我的 webView.ExecuteJavascript() 方法中使用数组作为参数,该方法将方法名称字符串作为参数。理想情况下,在 C# 中,它看起来像

webView.ExecuteJavascript("updateValues([[1, 2, 3],[4, 5, 6]])")

javascript中的updateValues函数长这样

updateValues(newvalues) {
oldvalues = newvalues
}

是否有更简单的方法来做到这一点?现在,结果存储在一个双数组列表(List)中,并以如下形式调用.ToArray().ToString():

webView.ExecuteJavascript("updateValues(" + gaugeCol.ToArray().ToString() + ")");

只给我变量类型而不是实际值。

谢谢

【问题讨论】:

  • 如果您询问对图书馆的推荐,那么这超出了本网站的范围。如您所知,除了遍历每个元素并将它们转换为字符串之外别无他法。

标签: c# javascript arrays list


【解决方案1】:

你可以使用JavaScriptSerializer

var arr = new[] { new[] { 1, 2, 3 }, new[] { 4, 5, 6 } };
string json = new JavaScriptSerializer().Serialize(arr); 

Json.Net

string json = JsonConvert.SerializeObject(arr);

这样,您几乎可以将任何类型的对象转换为json,而不仅仅是数组...

【讨论】:

    【解决方案2】:

    您可以使用这样的表达式将数组列表转换为 Javascript 语法:

    "[" + String.Join(",", gaugeCol.Select(g =>
      "[" + String.Join(",", Array.ConvertAll(g, Convert.ToString)) + "]"
    )) + "]"
    

    【讨论】:

    • 我很好奇为什么它被否决了。什么,这段代码没有产生预期的结果?
    • @akonsu:我也很好奇。代码经过测试,确实产生了所需的结果。
    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 2021-04-07
    • 1970-01-01
    • 2020-07-15
    • 1970-01-01
    • 2017-03-14
    • 1970-01-01
    • 2021-05-02
    相关资源
    最近更新 更多