2016-07-19 9 views
0

こんにちは、どうやってこれを動作させるのですか?私は捜したので、これは最も約束していましたが、どちらもうまくいきませんでした。JSONからリスト<class>&リスト<class>からJSON?

にErrorMessage:

デシリアライズ型は通常.NET型(すなわちない プリミティブ型のような整数でない配列または リストなどコレクション型)または辞書の種類(すなわち、辞書でなければなりません)。

どのように私は個々のオブジェクトを私のjsonから分割するのですか?

List<class> a = JsonConvert.DeserializeObject<List<class>>(JSON_String) 

JSON文字列:ここ

{ 
"SPALTEN": [{ 
    "NUMMER": 1, 
    "NAME": "BREITE", 
    "TYP": "Double", 
    "LAENGE": 0, 
    "EINHEIT": "m", 
    "EDITIERBAR": true, 
    "OPTIONAL": true, 
    "LAYER": null, 
    "LAYER_SPALTE": null, 
    "D_SPAL_NAME": null, 
    "D_SPAL_MIN": 0, 
    "D_SPAL_MAX": null, 
    "D_SPAL_VAL": null 
}, { 
    "NUMMER": 2, 
    "NAME": "KOMMENTAR", 
    "TYP": "String", 
    "LAENGE": 255, 
    "EINHEIT": null, 
    "EDITIERBAR": true, 
    "OPTIONAL": true, 
    "LAYER": null, 
    "LAYER_SPALTE": null, 
    "D_SPAL_NAME": null, 
    "D_SPAL_MIN": null, 
    "D_SPAL_MAX": null, 
    "D_SPAL_VAL": null 
}] 
} 

が私のクラスである:

public class CONFIG_CLASS 
{ 

    private int _NUMMER; 
    public int NUMMER 
    { 
     get { return _NUMMER; } 
     set { _NUMMER = value; } 
    } 

    private string _NAME; 
    public string NAME 
    { 
     get { return _NAME; } 
     set { _NAME = value; } 
    } 

    private string _TYP; 
    public string TYP 
    { 
     get { return _TYP; } 
     set { _TYP = value; } 
    } 

    private double _LAENGE; 
    public double LAENGE 
    { 
     get { return _LAENGE; } 
     set { _LAENGE = value; } 
    } 

    private string _EINHEIT; 
    public string EINHEIT 
    { 
     get { return _EINHEIT; } 
     set { _EINHEIT = value; } 
    } 

    private bool _EDITIERBAR; 
    public bool EDITIERBAR 
    { 
     get { return _EDITIERBAR; } 
     set { _EDITIERBAR = value; } 
    } 

    private bool _OPTIONAL; 
    public bool OPTIONAL 
    { 
     get { return _OPTIONAL; } 
     set { _OPTIONAL = value; } 
    } 

    private string _LAYER; 
    public string LAYER 
    { 
     get { return _LAYER; } 
     set { _LAYER = value; } 
    } 

    private int _LAYER_SPALTE; 
    public int LAYER_SPALTE 
    { 
     get { return _LAYER_SPALTE; } 
     set { _LAYER_SPALTE = value; } 
    } 

    private string _D_SPAL_NAME; 
    public string D_SPAL_NAME 
    { 
     get { return _D_SPAL_NAME; } 
     set { _D_SPAL_NAME = value; } 
    } 

    private int _D_SPAL_MIN; 
    public int D_SPAL_MIN 
    { 
     get { return _D_SPAL_MIN; } 
     set { _D_SPAL_MIN = value; } 
    } 

    private int _D_SPAL_MAX; 
    public int D_SPAL_MAX 
    { 
     get { return _D_SPAL_MAX; } 
     set { _D_SPAL_MAX = value; } 
    } 

    private string _D_SPAL_VAL; 
    public string D_SPAL_VAL 
    { 
     get { return _D_SPAL_VAL; } 
     set { _D_SPAL_VAL = value; } 
    } 


} 

(私も後で再びそれをエンコードしたいと思います) はあなたに感謝!

+0

もちろんのJSON文字列 –

+0

を示してください、ここであなたは –

+0

ことができますされあなたは目的地クラスも表示しますか?フィールド名が一致する限り(つまり、最初のフィールドはNUMMER)、デシリアライズは「うまくいく」べきです。 – Neil

答えて

0

私はまだ 最初にコメントを入れることはできません申し訳ありませんが、あなたのデータおよびあなたの変換クラスの間にいくつかの型の不一致があります LAYER_SPALTE、D_SPAL_MINとD_SPAL_MAXは、あなたのデータにnullです。 は、このコードは、あなたのために働くために持っている別のクラス

内のあなたの配列を入れてみてください置く:

public class MyClass 
{ 
    public SPALTEN[] SPALTEN { get; set; } 
} 

public class SPALTEN 
{ 
    public int NUMMER { get; set; } 
    public string NAME { get; set; } 
    public string TYP { get; set; } 
    public int LAENGE { get; set; } 
    public string EINHEIT { get; set; } 
    public bool EDITIERBAR { get; set; } 
    public bool OPTIONAL { get; set; } 
    public string LAYER { get; set; } 
    public int? LAYER_SPALTE { get; set; } 
    public string D_SPAL_NAME { get; set; } 
    public int? D_SPAL_MIN { get; set; } 
    public int? D_SPAL_MAX { get; set; } 
    public string D_SPAL_VAL { get; set; } 
} 

、その後

MyClass a = JsonConvert.DeserializeObject<MyClass>(JSON_String) 
+0

これは私のために働いた!だから私のクラスもJasonの文字列と同じ "クラス構造"が必要です –

1

デシリアライズしたいものの種類を指定してください。objectは動作しません。

List<MyClass> a = JsonConvert.DeserializeObject<List<MyClass>>("[{some json}]") 
+0

申し訳ありませんが、私のクラスは –

+0

あなたに質問がありますか? – Neil

+0

いいえstackoverflowのコードを簡素化するときに私の間違いでした –

0

インターネットで変換するには、JSONとC#の間で以下のURLを使用します。私はずっと使い続けています。

http://json2csharp.com/

+0

私はまたクラスを作成してみましたが、どちらもうまくいかなかった(素晴らしいwesite thou!) –

関連する問題