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?我只想解码一次。

WCF 返回错误的 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字符串,那么试着找出你是否可以得到一个在所有情况下都足够通用的对象。就像有一个具有列名及其值的对象列表,然后将完整列表传回客户端一样。