首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ASP.NET web服务(ASMX)的JSON请求中,区分大小写何时很重要?

在ASP.NET web服务(ASMX)的JSON请求中,区分大小写何时很重要?
EN

Stack Overflow用户
提问于 2010-04-29 22:52:37
回答 1查看 54.6K关注 0票数 24

我用发送到JSON2.0ASMXweb服务(使用ASP.NET 2.0的AJAX扩展1.0 )的JSON请求做了以下测试,似乎区分大小写在某些情况下很重要,但在其他情况下就不重要了。请参见以下示例:

  • 大小写匹配100%:

{"request":{"Address":{"Address1":"123 Main Street","Address2":"suite 20","City":"New York","State":"NY","Zip":"10000",“AddressClassification”:null}

结果:包含的对象名称AddressHTTP/1.1 200 OK

  • Case不匹配:

{"request":{"address":{"Address1":"123 Main Street","Address2":"suite 20","City":"New York","State":"NY","Zip":"10000",“AddressClassification”:null}

结果: web服务参数requestHTTP/1.1 200 OK

  • Case不匹配:

{"Request":{"address":{"Address1":"123 Main Street","Address2":"suite 20","City":"New York","State":"NY","Zip":"10000",“AddressClassification”:null}

结果:HTTP/1.1 500 Internal Server Error

(快速注意:类Request和参数request共享相同的名称这一事实是无关的。即使我将参数名称更改为lrequest__,仍然需要区分大小写。)

什么时候JSON Web Service请求区分大小写很重要?还有,这是一个普遍的web服务问题还是ASP.NET AJAX特有的问题?

其他背景信息:

我使用的是用于ASP.NET 2.0的AJAX扩展1.0,因此这个问题可能已经在该框架的后续版本中得到了解决。如果是这样,请让我知道。

在跟踪我最近的question regarding formatting JSON strings中的答案之后,我意识到我的请求失败的原因并不是因为无效的JSON (感谢T.J. Crowder指出这一点并链接到http://www.jsonlint.com/以进行JSON验证)。相反,在做了更多的测试后,我了解到问题是因为web服务不知道如何格式化我的JSON对象,并且我发现web服务在区分大小写方面非常挑剔。似乎有时候区分大小写很重要,而其他时候就不重要了(参见上面的例子)。

下面是我的web方法和类的C#代码:

代码语言:javascript
复制
[WebMethod]
public Response ValidateAddress(Request request)
{
    return new test_AddressValidation().GenerateResponse(
        test_AddressValidation.ResponseType.Ambiguous);
}

...

public class Request
{
    public Address Address;
}

public class Address
{
    public string Address1;
    public string Address2;
    public string City;
    public string State;
    public string Zip;
    public AddressClassification AddressClassification;
}

public class AddressClassification
{
    public int Code;
    public string Description;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-04-29 22:59:32

根据JSON-RPC spec的说法,答案总是。

9.0过程名和参数名区分大小写

一致性实现必须将过程和参数名称视为区分大小写,这样名称bar和BAR将被视为两个不同的实体。

因此,听起来它对你有效的情况是例外,而不是它们不起作用的情况。可能是方程式的某一方的人不遵守规范。

票数 56
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2738321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档