c# - C# 将对象转换为二维数组

标签 c# .net json excel-interop

这个应该很简单,但我真的不知道如何找到一种方法来做到这一点......

我正在使用.NET 4.0。我有一个用十进制数字填充的 object[12],并想用它来填充 Double 的 Excel 范围 [1,12]。我正在使用 JavaScriptSerializer 转换 JSON:

JavaScriptSerializer javascriptSerializer = new JavaScriptSerializer();
var jsonData = javascriptSerializer.Deserialize<dynamic>("{data:[0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22]}");

这应该是一句台词,但我能想到的唯一可行的办法是:

var myArray = new Double[1, 12];
// the cast to Double is necessary as json data is of type decimal, however excel seems to only accepts Double here
for (int i = 0; i < 12; i++) { PrimeShr[0,i] = (Double) jsonData["data"][i]; };
// sheet is of type Microsoft.Office.Interop.Excel.Worksheet
sheet.Range["myExcelRangeName"].Value2 = myArray;

或者仍然相当可怜,但至少在一行中:

sheet.Range["Input_PremiumSHR"].Value2 = new Double[1, 12] { { (Double)jsonData["data"][0], (Double)jsonData["data"][1], (Double)jsonData["data"][2], (Double)jsonData["data"][3], (Double)jsonData["data"][4], (Double)jsonData["data"][5], (Double)jsonData["data"][6], (Double)jsonData["data"][7], (Double)jsonData["data"][8], (Double)jsonData["data"][9], (Double)jsonData["data"][10], (Double)jsonData["data"][11] } };

我希望类似的东西能够工作,但从我收集的情况来看,初始化器不会这样工作:

sheet.Range["Input_PremiumSHR"].Value2 = new Double[1, 12] { new System.Collections.ArrayList( jsonData["data"] ).ToArray() };

我有很多类似的案例(其中一个是[12,1],这可能会更困难),我不想为每个案例都费力。有没有办法写得更简单一点?

最佳答案

为什么一定要使用动态?为什么不创建一个表示 jsonData 的简单类。

 public class SomeData
 {
      public double[] data { get; set; }
 }

然后反序列化后,

 JavaScriptSerializer javascriptSerializer = new JavaScriptSerializer();
 var jsonData = javascriptSerializer.Deserialize<SomeData>("{data:[0.11, 0.12, 0.13, 0.14, 0.15, 0.16, 0.17, 0.18, 0.19, 0.2, 0.21, 0.22]}");

您将能够直接访问 jsonData.data。

关于c# - C# 将对象转换为二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6905226/

相关文章:

C# Powershell 管理单元未使用 installutil 注册

.net - 如何找出与WCF服务的并发连接数?

c# - IEnumerable<TSource> Concat<TSource> 是否保留元素的顺序?

php - Laravel 4 - 如何在每次访问时对字段进行 json_decode?

python - 将 Pandas Dataframe 转换为嵌套 json

c# - Visual Studio 2015 .NETCore 类库复制文件夹到 bin/Debug/net452

c# - 如何同时为 .Net 3.5 和 4 编译项目

.net - 使用 .NET 控制/读取计算机风扇?

php - 如何制作简单的 PHP API 处理程序?

c# - 如何在 CultureInfo(c#) 中显示尼日利亚奈拉符号