JsonConverter的奇怪行为
本文关键字:JsonConverter | 更新日期: 2023-09-27 18:30:37
所以这是正在发生的事情:我得到了这个json字符串(在使用他们的API将图像上传到imgur之后):
{
"data": {
"id": "123456",
"title": null,
"description": null,
"datetime": 1378731002,
"type": "image/png",
"animated": false,
"width": 1600,
"height": 900,
"size": 170505,
"views": 0,
"bandwidth": 0,
"favorite": false,
"nsfw": null,
"section": null,
"deletehash": "qZPqgs7J1jddVdo",
"link": "http://i.imgur.com/123456.png"
},
"success": true,
"status": 200
}
我正在尝试使用 JsonConvert.DeserializeObject 反序列化为字典,如下所示:
richTextBox1.Text = json;
Dictionary<string, string> dic = JsonConvert.DeserializeObject<Dictionary<string, string>>( json );
MessageBox.Show( dic["success"].ToString() );
问题是,我可以在 RichTextBox 上看到 json 字符串,但 jsonConvert 之后的消息框永远不会出现......我在这里错过了什么?
事实上,我甚至可以在 JsonCOnvert 之后放置一个断点,它不会被触发。发生了什么事情?
谢谢。
我认为您在反序列化时会出现异常。您可以使用此站点并将您的 json 转换为具体类。
var obj = JsonConvert.DeserializeObject<RootObject>(json);
public class Data
{
public string id { get; set; }
public object title { get; set; }
public object description { get; set; }
public int datetime { get; set; }
public string type { get; set; }
public bool animated { get; set; }
public int width { get; set; }
public int height { get; set; }
public int size { get; set; }
public int views { get; set; }
public int bandwidth { get; set; }
public bool favorite { get; set; }
public object nsfw { get; set; }
public object section { get; set; }
public string deletehash { get; set; }
public string link { get; set; }
}
public class RootObject
{
public Data data { get; set; }
public bool success { get; set; }
public int status { get; set; }
}
你也可以使用 JObject
,因为它可以实现IDictionary
var dic = JObject.Parse(json);
MessageBox.Show(dic["success"].ToString());
也许你应该尝试使用Dictionary<string, object>
,因为值并不总是字符串。当您调用 json 反序列化程序时,似乎有一个例外。
也许你可以用一个"try-catch"块包围你的代码,以便捕获异常。