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 に答える