从 JSON 字符串中提取值
extracting a value from a JSON string
我正在开发一个 Blazor 应用程序,我有一个 Json 字符串,我正试图从中提取一个值。
Json 数据如下所示:
{"a1":"a1234","e1":"e1234}
我正在尝试从中提取 a1
值,即 "a1234"
我的 JSON 数据在字符串变量 rawJsonData
中。我正在尝试使用 JsonSerializer.Deserialize,但我不确定如何完全使用它...
@code
{
string rawJsonData = JsonData (this is not the actual data, it's being pulled from elsewhere)
var x = System.Text.Json.JsonSerializer.Deserialize<???>(rawJsonData)
}
这是解决这个问题的正确方法吗?我不确定用什么代替???多于。任何人都有这方面的经验。
创建 class:
public class Root
{
public string a1 { get; set; }
public string e1 { get; set; }
}
然后Deserialize
变成那个class:
var x = System.Text.JsonSerializer.Deserialize<Root>(rawJsonData);
或使用Newtonsoft.Json:
var x = Newtonsoft.Json.JsonConvert.DeserializeObject<Root>(rawJsonData);
要检索 a1
的值,只需调用:x.a1
如果您按照另一个答案中的建议使用 Newtonsoft,您甚至不必创建 class。
JObject temp = JObject.Parse(rawJsonData);
var a1 = temp["a1"];
如果您想坚持使用 System.Text.Json 并且不想为数据创建 class/struct(为什么不呢?),如评论中所建议,您可以
var jsonData = "{\"a1\":\"a1234\",\"e1\":\"e1234\"}";
var doc = JsonDocument.Parse(jsonData);
var a1 = doc?.RootElement.GetProperty("a1").GetString();
当然,绕过转换的 try catch 会有所帮助。
我正在开发一个 Blazor 应用程序,我有一个 Json 字符串,我正试图从中提取一个值。
Json 数据如下所示:
{"a1":"a1234","e1":"e1234}
我正在尝试从中提取 a1
值,即 "a1234"
我的 JSON 数据在字符串变量 rawJsonData
中。我正在尝试使用 JsonSerializer.Deserialize,但我不确定如何完全使用它...
@code
{
string rawJsonData = JsonData (this is not the actual data, it's being pulled from elsewhere)
var x = System.Text.Json.JsonSerializer.Deserialize<???>(rawJsonData)
}
这是解决这个问题的正确方法吗?我不确定用什么代替???多于。任何人都有这方面的经验。
创建 class:
public class Root
{
public string a1 { get; set; }
public string e1 { get; set; }
}
然后Deserialize
变成那个class:
var x = System.Text.JsonSerializer.Deserialize<Root>(rawJsonData);
或使用Newtonsoft.Json:
var x = Newtonsoft.Json.JsonConvert.DeserializeObject<Root>(rawJsonData);
要检索 a1
的值,只需调用:x.a1
如果您按照另一个答案中的建议使用 Newtonsoft,您甚至不必创建 class。
JObject temp = JObject.Parse(rawJsonData);
var a1 = temp["a1"];
如果您想坚持使用 System.Text.Json 并且不想为数据创建 class/struct(为什么不呢?),如评论中所建议,您可以
var jsonData = "{\"a1\":\"a1234\",\"e1\":\"e1234\"}";
var doc = JsonDocument.Parse(jsonData);
var a1 = doc?.RootElement.GetProperty("a1").GetString();
当然,绕过转换的 try catch 会有所帮助。