当前位置: 首页 > 面试题库 >

如何将JSON对象读取到WebAPI

严易安
2023-03-14
问题内容

我检查了一些类似的问题,但似乎没有一个合适的答案(或对我来说足够愚蠢)。因此,我有一个非常简单的WebAPI来检查DB中是否存在带有电子邮件的用户。

AJAX:

var param = { "email": "ex.ample@email.com" };
$.ajax({
    url: "/api/User/",
    type: "GET",
    data: JSON.stringify(param),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (data) {
        if (data == true) {
            // notify user that email exists
        }
        else {
            // not taken
        }             
    }                      
});

WebAPI:

public bool Get(UserResponse id)
{
    string email = id.email;
    UserStore<ApplicationUser> userStore = new UserStore<ApplicationUser>();
    ApplicationUserManager<ApplicationUser> manager = new ApplicationUserManager<ApplicationUser>(userStore);
    ApplicationUser user = manager.FindByEmail(email);

    if (user != null)
    {
        return true;
    }

    else
    {
        return false;
    }
}

//helper class:
public class UserResponse
{
    public string email { get; set; }
}

现在很明显,这是行不通的。Ajax调用工作正常,但是如何将json对象解析为WebAPI以便能够像调用它一样id.email
编辑
我无法将电子邮件地址作为字符串传递,因为逗号弄乱了路由。
ajax调用工作正常,该对象被发送到WebAPI。问题是我无法在后面的代码中解析对象。


问题答案:

问题:您当前的实现是根据GET请求将电子邮件作为实体发送。这是一个问题,因为GET请求不包含实体HTTP /
1.1方法
解决方案:将请求更改为POST

现在,由于您正在将电子邮件从客户端发送到api,因此必须将API实现更改为POST:

public bool Post(UserResponse id)

为了确保您发布的实体正确绑定,可以使用[FromBody]如下方式:

public bool Post([FromBody] UserResponse id)

如果执行此操作(并且尚未覆盖默认的模型绑定器),则必须对模型进行注释,例如:

[DataContract]
public class UserResponse
{
    [DataMember]
    public string email { get; set; }
}

我认为就是全部-希望它能起作用:)



 类似资料:
  • 我正在编写一个API控制器,用于接收和解析JSON异步帖子的内容,但无法读取该帖子中StringContent对象的内容。 这是我的API控制器中我希望看到值的部分。到达ApiController方法的值为null。jsonContent值是一个空字符串。我希望看到的是JSON对象的内容。 这是我的控制器来显示它是如何被调用的。 这就是发布方法。 我怀疑ApiController中Post方法的签

  • 问题内容: 我在了解如何实现这一目标方面遇到了问题。 基本上我们有一个API,用户发送以下格式的JSON :(如果代码不完美,请原谅,但您可以理解) 好的,我不确定我是否正确设置了JSON格式,但是现在这是我的问题。 我有一个带有参数Name,Last的类,还有一个作为其成员之一的对象Client和Property Date。 像这样: 因此,基本上,我不确定如何获取JSON,然后将其映射到我的对

  • 问题内容: 我如何/可以将json对象传递给webapi控制器(POST),并且 没有 类可将其映射到,而是将其作为任意内容来处理? 因此,如果我像这样从客户那里传递消息: 数据是这样的: 我的控制器将能够解析吗?下次数据可能与该签名不匹配(例如: 在我的控制器中,我尝试过: 和: 和(因为这实际上是与mongo数据库一起使用): 但是看起来对象映射器想要映射到字符串以外的其他东西… 问题答案:

  • 问题内容: 我有一个千兆字节的JSON文件。该文件由每个不超过几千个字符的JSON对象组成,但是记录之间没有换行符。 使用Python 3和模块,如何一次将一个JSON对象从文件读入内存? 数据在纯文本文件中。这是类似记录的示例。实际记录包含许多嵌套的字典和列表。 以可读格式记录: 实际格式。新记录一个接一个地开始,没有任何中断。 问题答案: 一般而言,将多个JSON对象放入一个文件会使该文件 无

  • 问题内容: 我正在寻找一个JSON分析器,该分析器可以让我从大型JSON文件(大小为几百MB)中遍历JSON对象。我从Json.NET尝试了JsonTextReader,如下所示: 但是它在令牌之后返回令牌。 如果我需要整个对象而不是令牌,有没有更简单的方法? 问题答案: 假设您有一个与此类似的json数组: 我将为对象类型声明一个类 现在,反序列化部分 还有一个伪JsonConverter类来拦

  • 问题内容: 我目前正在尝试将收到的JSON对象转换为具有相同属性的TypeScript类,但无法使其正常工作。我究竟做错了什么? 员工阶层 员工字符串 我的尝试 链接到打字稿游乐场 问题答案: 编译器允许您将返回的对象强制转换为类的原因是因为typescript基于结构子类型。 您实际上并没有的实例,而是拥有一个具有相同属性的对象(如在控制台中看到的)。 一个简单的例子: (操场上的代码) 没有错