Sky*_*ell -1 c# json json.net .net-core
我正在尝试将数组转换为类.所以我得到了数组,然后使用JsonConvert对其进行序列化,如下所示:
var gameResponse = GetGame(Id);
var returnedArray = gameResponse.Result.Results;
var json = JsonConvert.SerializeObject(returnedArray);
var result = JsonConvert.DeserializeObject<T>(json);
Run Code Online (Sandbox Code Playgroud)
我可以在Visual Studio调试模式下看到这个结果,"json"看起来像这样:
[
{
\"CreatorId\":\"41c5321e-6f37-4d4f-92f7-fc381be0fc62\",
\"GameId\": \"3938\",
\"Type\": \"2\",
\"CreateDate\": \"1/2/2017\",
\"TeamId\": \"2394\",
\"LeaderId\": \"34922\",
\"CountryCode\": \"23\",
\"SalesRank\": \"4\",
\"Title\": \"Space Shooter Max\",
\"TeamName\": \"The One\",
\"TeamMembers\" : \"4\"
}
]
Run Code Online (Sandbox Code Playgroud)
但是,当代码命中下一行时:
var result = JsonConvert.DeserializeObject<T>(json); // In this case, <T> is <Game>
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
JsonSerializationException:无法将当前JSON数组(例如[1,2,3])反序列化为类型'GameLabs.Game',因为该类型需要JSON对象(例如{"name":"value"})才能正确反序列化.
GameLabs.Game是一个看起来像这样的类:
public sealed class Game
{
public string CreatorId { get; set; }
public string GameId { get; set; }
public string Title { get; set; }
public DateTime CreateDate { get; set; }
public string CountryCode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我不确定它为什么不接受JSON.
有人看错了什么吗?
谢谢!
如果检查JSON,它不是单个对象,而是集合."[..]"表示集合.
例如,
[ "Ford", "BMW", "Fiat" ]
Run Code Online (Sandbox Code Playgroud)
上面的Json暗示了一个包含3个元素的字符串数组.这和你的Json类似.
因此,您还需要将Json反序列化为Collection.
var result = JsonConvert.DeserializeObject<List<T>>(str);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |