从 json 对象检索(反序列化)特定属性到 C# 结构(json 反序列化)



我试图从下面的JSON对象中仅获取FIRST属性(参数(,并将其存储为C#中的结构。我在此页面上使用了该解决方案。但我没有成功。如果有人可以帮助或指出我正确的方向,那将非常有帮助。谢谢。

{
"params" : [
{"OneInstance" : "true"},
{"Single" : "3"},
{"File_Name" : "test.exe"},
{"Conf_Name" : "inst.bin"}
],
"directories" : [
{"file1": "C:/Program Files (x86)/whatever/example"},
{"file2": "C:/Program Files/another/example"}
]}

public static JValuesStruct paramValues;
StreamReader streamReader = new StreamReader(@"Sample.json");
using (JsonTextReader reader = new JsonTextReader(streamReader))
{
while (reader.Read())
{
if (reader.TokenType == JsonToken.StartObject)
{
// Load each object from the stream and do something with it
JObject obj = JObject.Load(reader);
JsonSerializer serializer = new JsonSerializer();
paramValues = (JValuesStruct)serializer.Deserialize(new JTokenReader(obj), typeof(JValuesStruct));
}
}
}

public struct JValuesStruct
{
public bool OneInstance { get; set; }
public string Single { get; set; }
public string File_Name { get; set; }
public string Conf_Name { get; set; }
}

你去吧。它工作完美。首先从Nuget下载"newtonsoft.json"并将其添加到您的项目中。结构myStruct是转换为结构的反序列化 json 对象。

public void DeserializeMyJsonObject()
{
string json;
using (StreamReader r = new StreamReader("d:\json.txt"))
{
json = r.ReadToEnd();
}
var myStruct = JsonConvert.DeserializeObject<YourStruct>(json);
}
public struct YourStruct
{
[JsonProperty("params")]
public List<Object> KeyAndProperties { get; set; }
}

最新更新