gpt4 book ai didi

c# - 将 JsonValue 转换为域对象

转载 作者:太空狗 更新时间:2023-10-30 00:01:14 29 4
gpt4 key购买 nike

我有一个如下所列的 API 调用:

JsonValue result = api.GET("/chart/" + problemList.PatientMRN.ToString() + "/problems", problemInfo);
string resultString = result.ToString();

注意:我指的是System.Json.JsonValue

替代方法(使用 JavaScriptSerializer )

Rootobject_Labresult objGResponse = new JavaScriptSerializer().Deserialize<Rootobject_Labresult>(resultString);

根据 Json 中的字符串,我创建了相应的类(使用 Visual Studio 编辑菜单中的选择性粘贴)。

public class Rootobject_Labresult
{
public Labresult[] labresults { get; set; }
public int totalcount { get; set; }
}

public class Labresult
{
public string createddate { get; set; }
public DateTime createddatetime { get; set; }
public string departmentid { get; set; }
public string description { get; set; }
}

但是当我创建一个数组时,出现以下错误。

Labresult[] labresults = result[0];  
////Error: cannot implicitly convert type System.Json.JsonValue to Labresult

JsonValue 转换为域对象 (Labresult) 的最佳方法是什么?

最佳答案

这也可以使用 Json.Net 更简单地完成

JsonConvert.DeserializeObject<T> Method (String)

//...code removed for brevity
string json = result.ToString();
Rootobject_Labresult rootObject = JsonConvert.DeserializeObject<Rootobject_Labresult>(json);
Labresult[] labresults = rootObject.labresults;

从那里您应该能够提取所需的域值。

就这么简单,您可以创建一个扩展

public static class JsonValueExtensions {
public static T ToObject<T>(this JsonValue value) {
return JsonConvert.DeserializeObject<T>(value.ToString());
}
}

进一步减少了原始代码

//...code removed for brevity
Rootobject_Labresult rootObject = result.ToObject<Rootobject_Labresult>();
Labresult[] labresults = rootObject.labresults;

假设 result在上面的代码片段示例中是 JsonValue 的一个实例

关于c# - 将 JsonValue 转换为域对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50827265/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com