gpt4 book ai didi

c# - JSON.NET 根标记和反序列化

转载 作者:太空狗 更新时间:2023-10-29 17:52:29 26 4
gpt4 key购买 nike

我有以下从 Java 服务返回的 JSON

  {"Test":{
"value": 1,
"message": "This is a test"
}}

我有以下 C# 类

class Test {
public int value { get; set; }
public String message { get; set; }
}

但是,因为返回了根标签“Test”,所以我不能直接反序列化它

Test deserializedTest = JsonConvert.DeserializeObject<Test>(jsonString);

我发现我必须将 Test 类包装在另一个类中才能使其工作。除了

JToken root = JObject.Parse(jsonString);
JToken testToken = root["Test"];
Test deserializedTest = JsonConvert.DeserializeObject<Test>(testToken.toString());

最后我有第二个问题。我调用的大多数服务也可以返回异常对象。我想我会阅读 JSON 的“根”标签以确定如何反序列化对象。我如何获得第一个根标记和/或是否有更好、更优雅的方法来处理服务异常?

谢谢

最佳答案

有同样的问题,真的想摆脱这个“容器”,找到了这个解决方案,虽然你需要使用一个额外的字符串来找到根对象:

// Container I wanted to discard
public class TrackProfileResponse
{
[JsonProperty("response")]
public Response Response { get; set; }
}

// Code for discarding it
var jObject = JObject.Parse(s);
var jToken = jObject["response"];
var response = jToken.ToObject<Response>();

关于c# - JSON.NET 根标记和反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7299296/

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