繁体   English   中英

将JSON [] []转换为c#中的对象

[英]Convert JSON [][] to object in c#

我将我的JSON对象转换为可以在C#代码中工作的对象时遇到了一些问题。

     { "CheckboxHours": { 
           "method": "ID", 
           "valueparts": [ 
                 "Hour", 
                 [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23" ] 
]
        }
     }

这是我拥有的JSON字符串,用于为我创建Selenium对象。 我想要的是将valueparts[0] (“小时”)中的值与valueparts[1][0-23]相互组合,并创建一个Selenium对象数组

var jsonData = JsonConvert.DeserializeObject<jsonc#file>(_jsonFile);
Object[] hours = (Object[])jsonData.CheckboxHours.Valueparts[1];
SeleniumCheckBox[] checkbox = new SeleniumCheckBox[hours.Length];
for (int i = 0; i < hours.Length; ++i)
{
                cbHour[i] = new SeleniumCheckBox(jsonData.CheckboxHours.Valueparts[0].ToString() + hours[i]);
}

SeleniumCheckBox是我制作的一个类,它findElement(By.ID(value))取值并在后台创建一个具有findElement(By.ID(value))的新Selenium元素。 这已经在工作了。

我的问题是,他不允许从jsonData到Object[]的转换,而且我真的不知道该如何处理。

我希望我明确希望拥有什么-如果不能随意要求提供更具体的数据。

我认为。 你可以试试看

var jsonData = JsonConvert.DeserializeObject<dynamic>(_jsonFile);
var hours = jsonData.CheckboxHours.valueparts[1];
foreach (var hour in hours)
{
    //Some code
}

我不确定我是否理解正确,但是反序列化失败的原因可能是valueparts是List参数,通常在c#中,List仅包含一种类型的参数,例如。 字符串或整数。 在您的情况下,“小时”(valueparts [0])是一个字符串,而valueparts [1]是List。 我假设这是与反序列化JSON字符串的冲突。

{
 CheckboxHours:{
     "method":"ID",
     "valueparts":{
        Measure: "Hour",
        MesureValues: 
        [
          "0","1","2","3","4","5","6","7",
          "8","9","10","11","12","13","14",
          "15","16","17","18","19","20",
          "21","22","23"
        ]
      }
   }
}

像上面的代码一样,将valueparts更改为object,因此您可以将Hour作为字符串,并将value用作List。

暂无
暂无

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

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