1

C# を使用して解析しようとしている JSON 文字列があります。JsonConvert を使用して、データを JSON 文字列にシリアル化しました。

サンプルの JSON 文字列は次のとおりです。

{"names": ["John", "Joe", "Jack"], "nationality": "American"}

を使用して、この文字列をオブジェクトに逆シリアル化できます JsonConvert.DeserializeObject(x);

問題は、C# を使用してオブジェクトから読み取る方法がわからないことです。誰かが私を助けることができますか?

4

6 に答える 6

1

次のようなカスタム クラスを作成します。

public class CustomData
{
    public string[] Names { get; set; }
    public string Nationality { get; set; }

    public CustomData() { }
}

そして、JsonConvert を使用して、このタイプのオブジェクトを逆シリアル化します。

CustomData data = JsonConvert.DeserializeObject<CustomData>(x);
于 2013-07-31T22:48:46.293 に答える
1

以下で十分です。

public class PeopleGroup {

    public string[] names { get; set; }
    public string nationality { get; set }

}

var myObject = JsonConvert.DeserializeObject<PeopleGroup>(x);

基本的に、厳密に型指定されたオブジェクトを作成し、直接逆シリアル化します。

于 2013-07-31T22:48:52.897 に答える
1

より良いアプローチは、予想される構造でクラスを定義し、JavaScriptSerializerを使用して逆シリアル化することです。

class NameSet
{
    public IList<string> names { get; set; }
    public string nationality { get; set; }
}

var serializer = new JavaScriptSerializer();
var nameset  = serializer.Deserialize<NameSet>(jsonString);
于 2013-07-31T22:47:33.813 に答える
1
public class People
{
  [JsonProperty("names")]
  public List<string> Names;

  [JsonProperty("nationality")]
  public string Nationality;
}

他の答えは技術的には正しいですが、使用JsonPropertyAttributeは広く受け入れられている慣例です。次に使用しますJsonConvert

var people = JsonConvert.DeserializeObject<People>(x);
于 2013-07-31T22:50:47.067 に答える
1

実際にクラスを定義したくない場合は、匿名型を使用できます。

string json = "{\"names\": [\"John\", \"Joe\", \"Jack\"], \"nationality\": \"American\"}";

// Just defining the structure of the anonymous type
var x = new { names = new string[0], nationality = string.Empty };

x = JsonConvert.DeserializeAnonymousType(json, x);
于 2013-07-31T22:52:26.813 に答える
0

dataContractJsonSerializer クラスを使用する必要があります。これはより高速であり、最も重要なのは、.Net Framework の組み込みクラスであることです。次のコメントでソリューションを投稿します。DataContractJsonSerializer クラスをどのように使用できますか?

于 2013-10-29T06:51:19.040 に答える