2012-03-14 15 views
0

私はこの答えを与える他の場所があると知っているが、私は何を達成しようとしていますが、これは、逆シリアル化のための私のコードで、より複雑である:C#:asp.net 3.5:JSONのデシリアライズ - 各オブジェクト文字列の取得方法

これはexempleのためのJSONデータである:

data = @"{""ShiftID"":""2"",""EmpName"":""dsdsfs""}"; 

Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(data); 
List<string> list = new List<string>(values.Keys); 
// Loop through list 
foreach (string k in list) 
{ 
    System.Diagnostics.Debug.Print("'{0}', '{1}'", k, values[k]); 
} 

このあなたが知っているようにShiftID、2とEmpName、dsdsfsを返しますが、!

私のJSON文字列が複数の値を次のようになりたら何が起こる:

data = @"{""ShiftID"":""2"",""EmpName"":""dsdsfs""},{""ShiftID"":""4"",""EmpName"":""dsdsfd""}"; 

感謝を!

答えて

5

これが有効なJSONではありませんので、私のJSON文字列が複数の値

data = @"{""ShiftID"":""2"",""EmpName"":""dsdsfs""}, {""ShiftID"":""4"",""EmpName"":""dsdsfd""}";

エラーでこのように見れば何が起こります。

public class Employee 
{ 
    public string ShiftID { get; set; } 
    public string EmpName { get; set; } 
} 

と今デシリアライズ:

data = @"[{""ShiftID"":""2"",""EmpName"":""dsdsfs""},{""ShiftID"":""4"",""EmpName"":""dsdsfd""}]"; 

今、あなたは辞書の配列にデシリアライズすることができます::

var values = JsonConvert.DeserializeObject<Dictionary<string, string>[]>(data); 
foreach (var element in values) 
{ 
    foreach (var entry in element) 
    { 
     System.Diagnostics.Debug.Print("'{0}', '{1}'", 
      entry.Key, 
      entry.Value 
     ); 
    } 
} 

またはより良い、あなたのエンティティを表現するモデルを定義するあなたは、おそらく意味します従業員のリストに:

var employees = JsonConvert.DeserializeObject<Employee[]>(data); 
foreach (var employee in employees) 
{ 
    System.Diagnostics.Debug.Print("'{0}', '{1}'", 
     employee.ShiftID, 
     employee.EmpName 
    ); 
    } 
} 
+0

あなたのプロ!ありがとう – user181248

+0

私は値を取得しますが、列は取得しませんか?あなたはアイデアを持っています – user181248

+0

ShiftIDとEmpNameの値は常に異なっているので、 – user181248

0

JSONが無効です。あなたが探しているものはJSON配列です。これは大括弧内の文字列全体を囲んでいます... [{"" ShiftID ":" 2 "、...}、{" ShiftId ":" 3 ",. ..}]

関連する問題