【发布时间】:2011-08-26 10:40:40
【问题描述】:
我开发了一个 REST WCF 并测试发布方法,我进行了简单的调用并希望以 json 格式返回输出。以下是我的 SVC 和背后的代码
服务:
[OperationContract ]
[WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Xml,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare,
UriTemplate = "heroku/resources")]
User PostData(User objUser);
Service.cs:
public User PostData(User objUser)
{
User usr = new User();
usr.id = 100;
List<string> lst = new List<string>();
lst.Add("MY_URL");
lst.Add("MY");
usr.config = lst;
usr.message = "msg";
return usr;
}
用户等级:
[DataContract(Namespace = "http://localhost/RestWCFDemo/UserData")]
public class User
{
[DataMember]
[JsonProperty]
public int id
{
get;
set;
}
[DataMember]
[JsonProperty]
public List<string> config
{
get;
set;
}
[DataMember]
[JsonProperty]
public string message
{
get;
set;
}
}
现在从文件后面的 aspx 代码中,我调用了此服务并将该服务的响应分配给文本框,我得到的结果是:{"config":["MY_URL","MY"],"id":100, "message":"msg"} 但是我希望以这种格式输出 {"config":{...},"id":100,"message":"msg"} ,主要问题是 [ ] 而不是 { } .
【问题讨论】:
-
JSON 中的 {} 用于声明具有属性的对象。 [] 用于值的集合(数组)。在 C# 中,List 是值的集合。什么是“MY_URL”和“MY”?它们是属性吗?如果是这样,为什么要将它们创建为列表中的字符串?您将它们的值存储在哪里?