2017-10-24 4 views
0

私は何か非常に明白でなくなっていると確信していますが、私は別のスレッド( 1つ、this、またthisのように)を読みましたが、 。シンプルな文字列を逆シリアル化する

ここ

私のクラスです:

using System; 
using Newtonsoft.Json; 

namespace WebAPIClient 
{ 
    public class XWTournament 
    { 
    private string name; 

    [JsonProperty("name")] 
    public string Name { get => name; set => name = value; } 
    } 

    public class Root 
    { 
    public XWTournament xwtournam { get => xwtournam; set => xwtournam = value; } 
    } 
} 

そして、ここで私はそれらを使用しよう:

msg = "{\"tournament\": {\"Name\": \"Worlds 2014 Flight One\"}}"; 

Root root = JsonConvert.DeserializeObject<Root>(msg) ; 
string pippo = root.xwtournam.Name; 

しかし、この場合には、私はSTACを受け付けておりますkオーバーフローエラー...

何が欠けていますか?文字列内の変数を読み取るにはどうすればよいですか?

編集:便利な答えのおかげで、私はあなたのクラスの

using System; 
using Newtonsoft.Json; 

namespace WebAPIClient 
{ 
    public class XWTournament 
    { 
     //I've deleted the private variable 
     public string Name { get; set; } 

    } 

    public class Root 
    { 
     [JsonProperty("tournament")] 
     public XWTournament xwtournam { get; set; } 
    } 
} 
+0

あなたの問題を解決できるコードを使用している場合 –

+0

本当の機能がない場合は、ゲッタ/セッタを定義しないでください。あなたが持っているので、 '{get;セット; } 'はまったく同じことを行い、プライベートフィールドは必要ありません。 –

+0

@AmirHKH申し訳ありませんが、あなたのコードはどこですか? –

答えて

5

なしtournamentという名前のプロパティを持っていない、このようにコードを修正しました。あなたのJSONはそうです。それは何を示唆していますか?

public class Root 
{ 
    public XWTournament tournament { get; set; } 
} 

書き込み時に無限再帰を必要としません。それに割り当てることを試みてください:ゲッターとセッターは両方とも自分自身を呼び出します。これがスタックオーバーフロー例外の原因です。あなたもそのプロパティを設定しようとすると1つを得るでしょう。

+1

ありがとう、これは私を非常に助けました –

関連する問題