2

いくつかのスレッドを見てきましたが、狙っているものが見つからないようです。
次のJSON文字列が返されます。

成功した場合:

{"success":{"username":"key"}}

エラー時:

{"error":{"type":101,"address":"/","description":"link button not pressed"}}

これらをクラスに逆シリアル化して、エラーまたは成功メッセージがあるかどうかを判断して、それを続行できるようにする必要があります。これを達成する方法について何かアイデアはありますか?

ありがとう、

アダム

4

3 に答える 3

1

1つのオプションは、http://nuget.org/packages/newtonsoft.jsonを使用することです。独自のカスタムクラスを作成して逆シリアル化するかdynamic、ターゲットタイプとして使用できます。

var result = JsonConvert.DeserializeObject<Result>(jsonString);

class Result
{
    public SuccessResult success { get; set; }
    public ErrorResult error { get; set; }
}

class SuccessResult
{
    public string username { get; set; }
}

class ErrorResult
{
    public int type { get; set; }
    public string address { get; set; }
    public string description { get; set; }
}

成功を確認するだけでよい場合は、result.StartsWith("{\"success\":")不要な解析を回避するために確認するだけで済みます。ただし、これは、JSON文字列が常にこのようになることが保証されている場合にのみ実行する必要があります(余分な空白などはありません)。したがって、通常は、JSON生成を自分で所有している場合にのみ適切です。

于 2012-11-06T19:46:05.893 に答える
1

多くの小さなクラスを宣言する必要はありません。dynamicキーワードはここで役立ちます。

dynamic jObj = JObject.Parse(json);
if (jObj.error!= null)
{
    string error = jObj.error.description.ToString();
}
else
{
    string key = jObj.success.username.ToString();
}
于 2012-11-06T19:59:11.153 に答える
0

この回答は、独自のパーサーのローリングやJSON.Netの使用など、ほとんどのオプションをカバーしています。

JSONをC#で解析する

フォーマットがそれほど単純になる場合は、正規表現を書くこともできます...

于 2012-11-06T19:49:43.863 に答える