我第一次使用JSON,通过互联网搜索我找到了JSON.NET。我觉得它很容易使用,但我遇到了一个问题。每当我使用代码时,都会收到一个警告:
无法将当前JSON数组(例如[1,2,3])反序列化为类型“JSON_WEB_API.Machine”,因为该类型需要一个JSON对象(例如{"name":"value"})才能正确反序列化。
这是来自URL的JSON数组:
[
{
"id": "MachineTool 1",
"guid": "not implemented",
"name": "Individueller Maschinenname",
},
{
"id": "MachineTool 2",
"guid": "not implemented",
"name": "Individueller Maschinenname",
}
]
这就是代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net;
using System.Runtime.Serialization;
using Newtonsoft.Json;
namespace JSON_WEB_API
{
class Program
{
static void Main()
{
string json = new WebClient().DownloadString("http://localhost:12084/Machines?format=json");
Console.WriteLine(json);
//string json = @"[{"id":"MachineTool 1","guid":"not implemented","name":"Individueller Maschinenname"},{"id":"MachineTool 2","guid":"not implemented","name":"Individueller Maschinenname"}]
//Console.WriteLine(json)";
Machine machine = JsonConvert.DeserializeObject<Machine>(json);
Console.WriteLine(machine.id);
Console.Read();
}
}
[DataContract]
class Machine
{
[DataMember]
internal string id { get; set; }
[DataMember]
internal string guid { get; set; }
[DataMember]
internal string name { get; set; }
}
}
List<Machine> machines = JsonConvert.DeserializeObject<List<Machine>>(json);
进行反序列化。稍后您可以迭代该列表以访问各个Machine
对象。 - CS.