您正在寻找的完整对象的结构应如下:
[DataContract(Name="response")]
public class Response
{
[DataMember(Name = "locations")]
public IEnumerable<Location> Locations { get; set; }
[DataMember(Name = "error")]
public string Error { get; set; }
}
[DataContract(Name = "location")]
public class Location
{
[DataMember(Name = "id")]
public string Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember(Name = "statusid")]
public string StatusId { get; set; }
}
您需要设置对象层次结构,如所示{
and }
,以及 IEnumerable / 数组属性,如[
and ]
来自您想要的 JSON 输出。
该网站可能会令人困惑,因为没有简单的示例,但请查看介绍 JSON http://www.json.org/对语法有基本的了解。我遇到的另一个很好的网站,只有一些简单的例子,是ASP.NET Web API 中的 JSON 和 XML 序列化 http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization.
感谢 vittore 的一些指导,我注意到要构建与 JSON 输出完全匹配的对象,您将需要如下对象:
[DataContract]
public class ResponseParent
{
[DataMember(Name = "response")]
public Response ResponseInstance { get; set; }
}
[DataContract]
public class Response
{
[DataMember(Name = "locations")]
public LocationCollectionIntermediate Locations { get; set; }
[DataMember(Name = "error")]
public string Error { get; set; }
}
[DataContract]
public class LocationCollectionIntermediate
{
[DataMember(Name = "location")]
public IEnumerable<Location> Locations { get; set; }
}
[DataContract]
public class Location
{
[DataMember(Name = "id")]
public string Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember(Name = "statusid")]
public string StatusId { get; set; }
}
我已将它们添加到此处的第二个代码块中,因为这样的结构似乎不必要地复杂。但是,如果您可以更改 JSON 的预期输出,我会选择第一个块,并进行额外的更改,使两个Id
列入int
types.
创建这些类型是为了支持类似于设置的服务WCF 服务返回 JSON http://forums.asp.net/t/1349424.aspx,并使用以下代码进行测试:
string json;
using (var ms = new MemoryStream())
{
var ser = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(ResponseParent));
ser.WriteObject(ms, r);
json = System.Text.Encoding.UTF8.GetString(ms.GetBuffer(), 0, Convert.ToInt32(ms.Length));
}
详细信息数据契约Json序列化器 http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx
另请注意,如果您可以选择设置 RESTful Web 服务,那么您可以遵循以下指南如何在 60 秒内创建 JSON WCF RESTful 服务 http://www.codeproject.com/Articles/167159/How-to-create-a-JSON-WCF-RESTful-Service-in-60-sec.