需要从json文件C#中获取变量名及其数据



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 ...

最新更新