【发布时间】:2017-01-03 06:01:49
【问题描述】:
我有一个向我的 PHP API 发送 POST 请求的方法,API 以 JSON 字符串返回值进行响应。
然而,在对 JSON 结果使用JsonConvert.DeserializeObject() 之后,我得到了这种格式
{[
{
"usr_name": "12-34567",
"usr_fullname": "LASTNAME, FIRSTNAME MIDDLENAME",
"usr_emailaddress": "myemail@mail.com",
"photo_url": "http://mywebsite.com/fetch_photo.php?id=MTItNDA1MDY=",
"token": "64c420939814c62889ea143d17736841"
}
]}
但是我无法将其 Deserialize 发送到我的类,其结构如下所示
public class MyObject
{
public string usr_name { get; set; }
public string usr_fullname { get; set; }
public string usr_emailaddress { get; set; }
public string photo_url { get; set; }
public string token { get; set; }
}
我为此目的使用 Newtonsoft JSON.Net,这是我第一次在 C# 中处理 JSON,所以我完全不知道如何或做什么。我做了几项研究,只是为了找到与我返回的 JSON 值不同的过时教程或问题
【问题讨论】:
-
您有一个对象,其中包含一个包含单个对象的数组。无论您反序列化到什么,您的“myobject”只存在于该解码对象内部的 2 层。
-
@TheQuestioner 可能这个链接会帮助你 [stackoverflow.com/questions/9858448/…
-
尝试将 json 反序列化为
MyObject[]而不是MyObject -
@hellowstone 成功了。虽然有什么办法可以消除不需要的单索引数组吗?
-
如果您无法更改响应 JSON,最好的方法是将数组的第一个索引分配给新对象。
var myObj = myObject[0]