ASP.NET 核心 System.Text.Json JsonValueKind
ASP.NET Core System.Text.Json JsonValueKind
我遇到了 JsonValueKind 的问题,我无法访问它们的值。我正在使用 Hyperpay 进行付款结帐。
我使用下面的方法向他们的 api 发出请求并反序列化响应如下:
在home controller对应的action方法中我调用了request()
方法来获取结果。下面是结果:
例如,我无法获取代码和描述的值,因为它们存储在 JsonValueKind 中。你能帮我处理 JsonValueKind 以提取值吗?
非常感谢您的帮助。
如果你想在结果中获取对象值,这里有一个像下面这样的工作演示:
public void Test()
{
//the data here is the same as reader.ReadToEnd() in your project
var data = GetRequest();
//your result
var responseData = JsonSerializer.Deserialize<Dictionary<string, dynamic>>(data);
//change like below
var d = JsonDocument.Parse(data); //JsonDocument.Parse(reader.ReadToEnd())
var result = d.RootElement.EnumerateObject();
foreach (var r in result)
{
if (r.Value.ValueKind == JsonValueKind.String)
{
var stringValue = r.Value.GetString();
}
if (r.Value.ValueKind == JsonValueKind.Object)
{
var m = JsonSerializer.Deserialize<TestModel>(r.Value.GetRawText());
var Code = m.code;
var des = m.description;
}
}
}
型号:
public class TestModel
{
public string code { get; set; }
public string description { get; set; }
}
结果:
简单的方法是为如下结果创建一个 ViewModel:
public class ViewModel
{
public TestModel result { get; set; }
public string buildNumber { get; set; }
}
反序列化 json 字符串并获取如下值:
var responseData = JsonSerializer.Deserialize<ViewModel>(reader.ReadToEnd());
var code = responseData.result.code;
var des = responseData.result.description;
我遇到了 JsonValueKind 的问题,我无法访问它们的值。我正在使用 Hyperpay 进行付款结帐。
我使用下面的方法向他们的 api 发出请求并反序列化响应如下:
在home controller对应的action方法中我调用了request()
方法来获取结果。下面是结果:
例如,我无法获取代码和描述的值,因为它们存储在 JsonValueKind 中。你能帮我处理 JsonValueKind 以提取值吗?
非常感谢您的帮助。
如果你想在结果中获取对象值,这里有一个像下面这样的工作演示:
public void Test()
{
//the data here is the same as reader.ReadToEnd() in your project
var data = GetRequest();
//your result
var responseData = JsonSerializer.Deserialize<Dictionary<string, dynamic>>(data);
//change like below
var d = JsonDocument.Parse(data); //JsonDocument.Parse(reader.ReadToEnd())
var result = d.RootElement.EnumerateObject();
foreach (var r in result)
{
if (r.Value.ValueKind == JsonValueKind.String)
{
var stringValue = r.Value.GetString();
}
if (r.Value.ValueKind == JsonValueKind.Object)
{
var m = JsonSerializer.Deserialize<TestModel>(r.Value.GetRawText());
var Code = m.code;
var des = m.description;
}
}
}
型号:
public class TestModel
{
public string code { get; set; }
public string description { get; set; }
}
结果:
简单的方法是为如下结果创建一个 ViewModel:
public class ViewModel
{
public TestModel result { get; set; }
public string buildNumber { get; set; }
}
反序列化 json 字符串并获取如下值:
var responseData = JsonSerializer.Deserialize<ViewModel>(reader.ReadToEnd());
var code = responseData.result.code;
var des = responseData.result.description;