3

在过去的 4 个小时里,我一直在寻找如何解决这个问题的方法,但我还没有找到解决方案。

我正在使用 .NET 构建一个 API,并希望解析从 API 调用发回的 JSON 信息。

我目前的方法执行以下操作:

private void PostNewPlayer(HttpContext context)
{
    // Create the serializer
    context.Request.InputStream.Position = 0;

    DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(ASPlayer));
    ASPlayer p = (ASPlayer)json.ReadObject(context.Request.InputStream);  <-- Exception here
    Int32 playerId = ASPlayerManager.InsertNewPlayer(p);
}

但我目前在指示的行得到一个异常。我确保我的类实现了正确的序列化命名空间:

using System.Runtime.Serialization;
using System.IO;
using System.Runtime.Serialization.Json;

我试图序列化的类已经相应地设置了它的 DataContract 和 Member 字段:

[DataContract]
public class ASPlayer
{
    [DataMember]
    private string _name;
    public string player_name 
    {
        get { return _name; }
        set { _name = value; }
    }

    [DataMember]
    private string _location;
    public string player_location
    {
       get { return _location; }
       set { _location = value; }
    }

    // Other vars
    ... 

    public ASPlayer(string name, string location)
    {
        _name = name;
        _location = location;
     }
}

但是,当我使用 Postman 等 HTTP 客户端发出请求时,我收到问题标题中所述的错误

在此处输入图像描述

4

2 回答 2

2

我认为你标记了错误的变量,这个:

[DataMember]
private string _name;
public string player_name 

应该是这样的:

private string _name;
[DataMember]
public string player_name 
于 2015-03-30T18:38:42.433 回答
-1

代表我的答案是一个非常严重的错误,但是对于那些将来遇到这种情况的人,请确保您通过 Raw 字段在 Postman 中发送您的 JSON 对象。就我而言,我只是做了:

{
  "player_name": "Test",
  "player_location": "EUW",
  "player_wins":10,
  "player_draws":10,
  "player_losses":15,
  "player_points":20
}

这修复了它

于 2015-03-30T21:34:55.700 回答