【问题标题】:Passing Json to the Web Service将 Json 传递给 Web 服务
【发布时间】:2017-01-20 13:19:26
【问题描述】:

我正在尝试将 json 数据推送到网络服务;

这是我的示例数据;

    {
       "data" : {
       "username" : "demo",
       "password" : "demo1082*098/*42a", 
       "LoginToken" :     "AAFF540EC55DASEFBE7E3D8404AED31F6DD30CA2BFCE2433B9475E696GG38730"
       }
    }

这是我的网络服务;

public string Post([FromBody]string data)
List<Login> datas = JsonConvert.DeserializeObject<List<Login>>(data);

错误; Newtonsoft.Json.dll 中出现“System.ArgumentNullException”类型的异常,但未在用户代码中处理

数据显示为 NULL

我正在使用 WebAPI、restful api、C#、visual std 2015

提前致谢。

编辑;

我正在使用 DHC chrome 扩展来发布数据。 标题; 内容类型:应用程序/json 身体;

{
           "data" : {
           "username" : "demo",
           "password" : "demo1082*098/*42a", 
           "LoginToken" :     "AAFF540EC55DASEFBE7E3D8404AED31F6DD30CA2BFCE2433B9475E696GG38730"
           }
        }

错误;

500 内部服务器错误

编辑; 我发现错误是因为“字符串”类型的数据。当我将其更改为“动态”时,我解决了这个问题。有人可以推荐我一个关键字而不是动态吗?

【问题讨论】:

  • 请分享您如何将价值传递给网络服务,代码
  • @IkramTurgunbaev 谢谢。我正在使用 POST 方法。
  • @NewPHPer 检查我的解决方案,这只是另一种方法,以防您想避免动态关键字

标签: c# json web-services rest


【解决方案1】:

1) 你必须创建一个像

这样的类
public class LoginData
{
    public string username {get;set;}
    public string password {get;set;}
    public string LoginToken {get;set;}
}

并在您的网络服务中使用如下

public string Post([FromBody]LoginData data)

2)我看到下面一行你已经创建了一个类名Login(如果你在 json 中有一条记录)

Login datas = JsonConvert.DeserializeObject<Login>(data);

所以你也可以使用

public string Post([FromBody]Login data)

【讨论】:

    【解决方案2】:

    一种方法如下,

    创建您的请求的类

        public class Data
    {
        public string username { get; set; }
        public string password { get; set; }
        public string LoginToken { get; set; }
    }
    
    public class RootObject
    {
        public Data data { get; set; }
    }
    

    在你的 post 方法中

    public string Post([FromBody]RootObject data)
    

    现在您甚至不必反序列化它。并且可以作为类的属性直接访问。

    【讨论】:

    • 我能知道投反对票的原因吗,是否需要改进
    • 我投了赞成票。你的回答对我有用。谢谢。
    猜你喜欢
    • 2011-02-02
    • 2012-04-12
    • 2016-01-21
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多