有兩種解決方案來解決你的問題,考慮你想使用你的對象的方式。
第一個是簡單地創建DTO具有相同的字段。當您需要完全控制用於:
using System.Collections.Generic;
using System.Runtime.Serialization;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
namespace ConsoleTest
{
class Program
{
[DataContract]
public class Example
{
[DataMember]
public Product Product { get; set; }
}
[DataContract]
public class Product
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
}
static void Main(string[] args)
{
var json = @"
[
{
""product"": {
""id"": 2,
""name"": ""Auto""
}
}
]";
var obj = JsonConvert.DeserializeObject<List<Example>>(json,
new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
});
}
}
}
第二個,當你想從JSON幾個字段,不那麼在意一切,並採用動態型使用。易於使用,易於使用,看起來不錯,但不是很安全:
using System.Collections.Generic;
using Newtonsoft.Json;
namespace ConsoleTest
{
class Program
{
static void Main(string[] args)
{
var json = @"
[
{
""product"": {
""id"": 2,
""name"": ""Auto""
}
}
]";
dynamic list = JsonConvert.DeserializeObject<List<dynamic>>(json);
var id = (int)list[0].product.id;
}
}
}
你有什麼試過?你知道http://json2csharp.com嗎?你使用Json.Net嗎? –
哦,真的嗎?你可以與我們分享這些解決方案嗎,所以我們會更多地瞭解問題。 – eocron
,看起來不像一個有效的JSON ...以及不知道你是否意味着一個JSON數組或什麼? – Rahul