2016-03-30 13 views
0

kullanırken bir Sözlük veya KeyValuePair anahtar/değer nasıl kaldırılır, diğer iletilerde bazı fikirler göründü, ancak benim json dizesinde Anahtar Değer metninden kurtulma. FLOT javascript grafik uygulamasına geçmek için bir dizi kod içinde yerleşik bir seçenek var. Sözlük türü öğeleri, bana bir sorun veriyor.DataContractJsonSerializer

.Net 4.0 kullanarak, daha yeni DataContractJsonSerializer'a sahip değilsiniz.

[DataContract] 
public class MyOptions 
{ 

    [DataMember(Name = "data", EmitDefaultValue = false)] 
    public List<KeyValuePair<string, string>> SeriesData { get; set; } 

} 

çıkış örneği:

{ "veriler": [{ "anahtar": "ooo1", "değer", "ppp1"}, { "anahtar": "ooo2"," bir değer "" ppp2 "}, {" anahtar ":" o oo3" , "değer", "ppp3"}]}

ne gerek

{ "veriler": [ ["ooo1", "ppp1"], ["ooo2", "ppp2"], ["ooo3", "ppp3"]]}

+0

Liste > kullanılmalı mı? –

+0

Sözlük veya KeyValuePair'i kullanmak ister. Sadece tüm belirli seçenekleri oluştururken kolaylıkla. Tırtıklı bir diziyle başlayabilirim, init dizi ile uğraşmak istemedim. çok fazla döngü oluyor. –

cevap

0

DataContractJsonSerializer kullanarak bir çözüm bulundu.

Pürüzlü bir dizi kullanma. Dize [] [] değil Dize [,] (bu serileştirilmeyecektir).

Bu yüzden seçenekleri oluştururken KeyValau çiftini kullanıyorum ve hala DataContractJsonSerializer'ı kullanabiliyordum.

 private List<KeyValuePair<string, string>> _data = new List<KeyValuePair<string, string>>(); 
     public List<KeyValuePair<string, string>> DataKvp 
     { 
      get { return _data;} 
      set { _data = value; } 
     } 

     private String[][] _dataArray; 
     [DataMember(Name = "data", EmitDefaultValue = false)] 
     public String[][] DataArray 
     { 
      get 
      { 
       _dataArray = new string[_data.Count][]; 
       var i = 0; 
       for (var index = 0; index < _data.Count; index++) 
       { 
        var pair = _data[index]; 
        _dataArray[i] = new[] { pair.Key, pair.Value }; 
        i++; 
       } 
       return _dataArray; 
      } 

     } 

Yani şimdi ben hala

 test.DataKvp = new List<KeyValuePair<string, string>>(); 
     test.DataKvp.Add(new KeyValuePair<string, string>("ooo1", "ppp1")); 
     test.DataKvp.Add(new KeyValuePair<string, string>("ooo2", "ppp2")); 
     test.DataKvp.Add(new KeyValuePair<string, string>("ooo3", "ppp3")); 

kullanabilirsiniz Ve serileştirici pürüzlü dizi kullanın ve benim için dönüşüm yapacağız.

İlgili konular