Json示例:
{
"typeOfDriver": "selenium",
"goToURL": "url",
}
基本上,我需要一种方法来收集第一个变量名"typeOfDriver",使用我现在使用的代码,我只从元素中获取数据。
代码:
dynamic loadConfig = JsonConvert.DeserializeObject(File.ReadAllText(path + "/" + response));
string typeOfDriver = loadConfig["typeOfDriver"];
谢谢!
编辑:解释得更好,我需要知道第一行变量的名称,例如这次是typeOfDriver,另一次会是另一次,所以我需要知道它。
您可以使用JObject
,解析JSON并从第一个属性中获取名称和值
var json = JObject.Parse(File.ReadAllText(path + "/" + response));
var property = json.Properties().FirstOrDefault();
var name = property.Name; //returns "typeOfDriver" string
var value = property.Value.ToString();
使用当前代码并反序列化为dynamic
,它可以是类似的
IEnumerable<JProperty> properties = loadConfig.Properties();
var name = properties.FirstOrDefault()?.Name; //returns "typeOfDriver" string
要迭代所有属性名称,只需在foreach
循环中遍历即可
foreach (var property in loadConfig.Properties())
{
var name = property.Name;
}
我强烈建议创建一个类来表示来自JSON文件的数据。如果数据是动态的,那么反序列化为Dictionary可能是最有意义的。如果需要遍历JSON层次结构,则可能需要反序列化为JObject。任何没有用Newtonsoft.Json明确定义的东西都将以JObject的形式返回,所以使用dynamic并不是真正必要的。
听起来像是你应该做的类型安全的事情。像这样的东西(别忘了带using NewtonSoft.Json;
(:
public class InfoDto {
public string typeOfDriver {get; set;}
public string url {get; set;}
}
// get the string any way you want and then
InfoDto myObject = JsonConvert.DeserializeObject<InfoDto>(someString);
// use myObject.typeOfDriver any way you want ...