【问题标题】:WebAPI - invalid JSON stringWebAPI - 无效的 JSON 字符串
【发布时间】:2013-09-13 16:48:12
【问题描述】:

我正在开发 WebAPI 项目。

我有以下方法:

public string Get(string a, string b)
{
    return "test";
}

当我发送带有Accept: application/json 标头的 GET 请求时,WebAPI 返回以下响应:

"test"

此响应无效,应为:

[
    "test"
]

如何强制 WebAPI 在 JSON 响应中包含方括号?

【问题讨论】:

    标签: asp.net json asp.net-web-api json.net


    【解决方案1】:

    如果您希望返回的 JSON 包含一个数组(方括号),那么您需要返回一个数组(或列表)。

    你可以这样做:

    public string[] Get(string a, string b)
    {
        return new string[] {"test"};
    }
    

    或者是这样的:

    public List<string> Get(string a, string b)
    {
        List<string> list = new List<string>();
        list.Add("test");
        return list;
    }
    

    编辑

    要返回一个对象而不是一个数组,你可以这样编写你的方法:

    public object Get(string a, string b)
    {
        return new { prop = "test" };
    }
    

    请注意,您也可以使用强类型类代替 object,然后返回它。

    【讨论】:

    • 我想返回一个字符串,但 Fiddler 和所有 JSON 验证器报告 "test" 不是有效的 JSON 字符串。另一方面,jQuery 解析该响应没有问题,所以我想知道我应该返回一个具有一个属性的对象还是保留所有内容?
    • 返回一个具有一个属性的对象可能会更好,原因有几个。首先,它肯定会让验证者满意,一旦你需要调试东西,这会让你的生活更轻松。其次,如果您以后需要向响应中添加更多信息,如果您已经返回了一个对象,这样做很容易:只需添加另一个属性。相反,如果您从返回一个字符串开始,那么您必须在需要添加更多信息时将其更改为一个对象。如果它是已发布的 API,那么这可能会导致向后兼容性问题。
    猜你喜欢
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多