从 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 会有所帮助。