2017-01-29 6 views
0
「ID」を取得するにはどうすればよい
string json string = {\"GetMyClassListResult\":{\"MyClassList\":[{\"Id\":1,\"Amount\":\"5,00\"},{\"Id\":2,\"Amount\":\"10,00\"},{\"Id\":3,\"Amount\":\"20,00\"},{\"Id\":4,\"Amount\":\"25,00\"}],\"ReturnValues\":{\"ErrorCode\":1,\"ErrorDescription\":\"Successful\"}}} 

:1" と 『量』: 『?。あなたはデシリアライズされます。この文字列を、あなたのクラスオブジェクトにクラスを必要とするすべての5,00』C#を使用してjsonデータを取得するには?

+0

私はそれを読むことができるようにあなたのJsonをフォーマットすることから始めることができます。 –

答えて

1

まず、あなたはクラスを宣言する必要があります以下のようになる。

class MyClass 
{ 
    [JsonProperty(PropertyName = "Id")] 
    public int Id { get; set; } 

    [JsonProperty(PropertyName = "Amount")] 
    public string Amount { get; set; } 
} 

、その後、あなたはあなたの方法に役立ちます

var Jsonobj = JObject.Parse(json); 
var list = JsonConvert.DeserializeObject<MyClass[]>(Jsonobj["GetMyClassListResult"]["MyClassList"].ToString()).ToList<MyClass>(); 

希望に次の操作を行うことができます。あなたが使用することができLINQに優れたJson.NETパッケージを組み合わせる

+0

こんにちはAnu Wiswan ".ToList ()" not working –

+0

@sunayyildiz 'using System.Linq;'はありますか? –

+0

ありがとうAnu、RootObject obj = JsonConvert.DeserializeObject (jsonString); var result2 = obj.GetCardTaskListResult.CardTaskList.Select(p => new {Id = p.Id、Amount = p.Amount})。ToArray(); そのコードは良い仕事です:) –

0

が最初 あなたは、IDと金額の変数が含まれていますクラスが必要です。あなたはデシリアライズすることができその後

この文字列をオブジェクトに、あなたはあなたが望む任意のデータにアクセスすることができます。

1

var result = JObject.Parse(json)["GetMyClassListResult"]["MyClassList"] 
        .Select(item => new { Id = item["Id"], Amount = item["Amount"] }) 
        .First(); 

resultIdAmountは値1"5,00"でJSON配列内の最初の項目に対応する特性を有しています。

代わりに、すべてのアイテムの配列が必要な場合は、First()ToArray()に置き換えます。

+0

こんにちはジョン、私は Newtonsoft.Json.Linqを使用して挿入されています。 Newtonsoft.Jsonを使用して ; SelectTokenとSelectTokensの代わりに.Select()を使用します –

+0

ファイルの先頭に 'using System.Linq;'を含めましたか? –

+0

System.Linqを使用して挿入します。 ToList を使用したいと思います。私のコードを挿入します。 (Item => new {Id = item ["Id"]、Amount = item)このクラスには、次の要素が含まれています。 ["Amount"]})。ToList (); " ... –

1

あなたはストレートjs​​onを持っていて、それをオブジェクトに変換して意味のある値を取得しようとしていますか?

I 個人的には、できる限りのクラスで作業することを好みます。私は生のjsonをC#コンバータのjsonに投げます。私はJsonUtilsが個人的に好きです。 (私は団結しておらず、ただの素晴らしい無料サービスしかありません)。そこには他にもいくつかのものがありますが、最も頑強なようです。

あなたがそこにあなたの生のJSONを投げる場合は、以下のクラスを取得:

public class MyClassList 
{ 
    public int Id { get; set; } 
    public string Amount { get; set; } 
} 

public class ReturnValues 
{ 
    public int ErrorCode { get; set; } 
    public string ErrorDescription { get; set; } 
} 

public class GetMyClassListResult 
{ 
    public IList<MyClassList> MyClassList { get; set; } 
    public ReturnValues ReturnValues { get; set; } 
} 

public class Example 
{ 
    public GetMyClassListResult GetMyClassListResult { get; set; } 
} 

よしを。モデルが完成したので、jsonを非直列化することができます。 jsonを操作するための最も一般的なライブラリはです。NuGetまたは直接ダウンロードで入手できます。

ダウンロードする場合は、そのDLLへの参照を追加する必要があります。 Nugetは、インストール時に自動的に参照します。あなたのクラスファイルの先頭に

、あなたは他のusing文と一緒に

using Newtonsoft.Json; 

を追加する必要があります。

あなたの方法ではJsonConvert.Deserialize<List<Example>>(json)と呼ぶので、あなたのコレクションはPOCOになります。

コレクションにはオブジェクトが1つしかないので、コレクションで.First()を呼び出して、IdAmountプロパティで2つの値にアクセスできます。 System.Linqusingステートメントにも含まれていることを確認する必要があります。

全コード:

var json = @"{\"GetMyClassListResult\":{\"MyClassList\":[{\"Id\":1,\"Amount\":\"5,00\"},{\"Id\":2,\"Amount\":\"10,00\"},{\"Id\":3,\"Amount\":\"20,00\"},{\"Id\":4,\"Amount\":\"25,00\"}],\"ReturnValues\":{\"ErrorCode\":1,\"ErrorDescription\":\"Successful\"}}}"; 

var collection = JsonConvert.Deserialize<List<Example>>(json); 

var x = collection.First(); 
var amount = x.Amount; 
var id = x.Amount; 

あなたは、あなたが合うように操作したり、これらの変数で動作するように自由です。 :)

関連する問題