WCF 返回错误的 JSON
本文关键字:JSON 错误 返回 WCF | 更新日期: 2023-09-27 18:34:00
我有一个必须返回 JSON 的 wcf 服务。我的代码如下所示:
public String areaGetStreetTypes(int city_id, int language_id)
{
string json = "";
string responseList = "{'"triname'":'"IMP'",'"name'":'"IMPASSE'"}";
if (responseList.Length != 0){
string responseStatusJSON = "{'"status'":0, '"message'":'"Success !!!'"}";
json += "{'"responseList'":[" + responseList + "],";
json += "'"responseStatus'":" + responseStatusJSON + "}";
}
else{
string responseStatusJSON = "{'"status'":1, '"message'":'"Error !!!'"}";
json += responseStatusJSON;
}
return json;
}
//my interface looks like
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "areaGetStreetTypes", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)]
String areaGetStreetTypes(int city_id, int language_id);
原始格式的响应:
{"areaGetStreetTypesResult":"{''"responseList''":[{''"triname''":''"IMP''",''"name''":''"IMPASSE''"}],''"responseStatus''":{''"status''":0, ''"message''":''"Success !!'''"}}'"}
我使用 php 脚本进行测试。首次解码后:
标准类对象(
[areaGetStreetTypesResult] => {"responseList":[{"triname":"IMP","name":"IMPASSE"}],"responseStatus":{"status":0, "message":"Success !!!"}}
)
只有在我的第二次json_decode之后,我才能得到我想要的:良好的 JSON 响应
我可以在服务中更改哪些内容才能首次获得良好的 JSON?我只想解码一次。
你 JSON
操作两次 - 一次在你的方法中,第二次当你告诉 WCF 在 WebInvoke 属性中使用 JSON 进行序列化时。
为什么不制作更多的合约并返回它们,而不是手动构造结果字符串?
您可以创建一个可以返回的类对象,如下所示:
namespace Rest
{
public class JsonRes
{
public ResponseList ResponseList { get; set; }
public ResStatus ResponseStatus { get; set; }
}
public class ResponseList
{
public string triName { get; set; }
public string name { get; set; }
}
public class ResStatus
{
public string status { get; set; }
public string message { get; set; }
}
}
WCF 框架执行序列化为 JSON。
如果你有从数据库动态构建的json字符串,那么试着找出你是否可以得到一个在所有情况下都足够通用的对象。就像有一个具有列名及其值的对象列表,然后将完整列表传回客户端一样。