2016-08-19 4 views
0

これは私のコードのサーバーから来ていた上記の文字列でJson Stringをデシリアライズし、C#を使用してオブジェクトからキーを取得する方法?

""{\n \"data\": [\n {\n  \"listid\": \"\",\n  \"name\": \"\"\n }\n ]\n}"" 

です。私は文字列を逆シリアル化し、オブジェクトの配列からキーを取得したい私はDictionaryJsonConvert.Deserializationを使ってみましたが、例外がスローされます。私もJObjectJArrayを試しました。私はlistId, nameキーを取得したいです。

+0

あなたは今お気に入りのjsonシリアライザに見えるNewtonJsoftライブラリを試しましたか? – Slicc

+1

@Slicc、['JsonConvert'](http://www.newtonsoft.com/json/help/html/t_newtonsoft_json_jsonconvert.htm)は' json.net'です。私はただのタグを固定しました。そしてOPには、私たちがあなたを助けてくれるようにするためにコードとエラーを表示してください。 – Sinatr

答えて

3

独自のタイプにデシリアライズを試みましたか? 、私は解決策を持って

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     string deser = "{\n \"data\": [\n {\n  \"listid\": \"\",\n  \"name\": \"\"\n }\n ]\n}"; 

     var obj = JsonConvert.DeserializeObject<MyCollection>(deser); 


    } 
} 


public class MyType 
{ 
    [JsonProperty("listid")] 
    public string ListId { get; set; } 

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

public class MyCollection 
{ 
    [JsonProperty("data")] 
    public List<MyType> Data { get; set; } 
} 
1

コードが正常に動作します

string json = "{\n \"data\": [\n {\n  \"listid\": \"\",\n  \"name\": \"\"\n }\n ]\n}"; 
     var jss = new JavaScriptSerializer(); 
     List<string> li = new List<string>(); 
     dynamic jsondata = jss.Deserialize<dynamic>(json); 
     foreach (string key in jsondata["data"][0].Keys) 
     { 
      li.Add(key); 
     } 
1

次あなたが一致して対応するクラスを作成する必要がC#で

をNewtonsoft.Jsonライブラリを使用することができます。これは、私の作品json文字列をC#オブジェクトにデシリアライズするために、C#のjson配列のプロパティ名を使用します。

次のコードを参照してください。

namespace StackOverflow.Test 
{ 
    using Newtonsoft.Json; 
    using System; 
    using System.Collections.Generic; 
    using System.Linq; 

    class Program 
    { 
     static void Main(string[] args) 
     { 
      var json = "{\n \"data\": [\n {\n  \"listid\": \"123\",\n  \"name\": \"Name\"\n }\n ]\n}"; 
      var lists = JsonConvert.DeserializeObject(json, typeof(Lists)) as Lists; 
      var list = lists.Data.FirstOrDefault(); 

      Console.WriteLine("Name: " + list.Name); 
      Console.WriteLine("List Id: " + list.ListId); 

      Console.WriteLine("Press any key to exit"); 
      Console.ReadKey(); 
     } 
    } 

    class Lists 
    { 
     public List<Info> Data { get; set; } 
    } 

    class Info 
    { 
     public string ListId { get; set; } 

     public string Name { get; set; } 
    } 
} 
関連する問題