2017-07-16 13 views
0
"fields": [ 
    { 
     "field": { 
      "name": "SMS", 
      "value": "Yes" 
     } 
    }, 
    { 
     "field": { 
      "name": "Email", 
      "value": "" 
     } 
    }, 
    { 
     "field": { 
      "name": "Total", 
      "value": "" 
     } 
    }, 
] 

私は上記のようなJSON形式を作成しようとしていますので、私は以下のようなクラスを作成しました。シリアライゼーションは期待した形式では返されませんが、どうすればこの問題を解決できますか。JSONオブジェクトの作成 - シリアル化C#

public class Test 
{ 
    public List<Field> fields; 
} 
public class Field 
{ 
    public string name { get; set; } 
    public string value { get; set; } 
} 

応答:

"fields": [{ 
       "name": "SMS", 
       "value": "Yes" 
      }, { 
       "name": "Email", 
       "value": "" 
      },{ 
       "name": "Total", 
       "value": "" 
      }] 
+0

をあなたはHTTPを使用に反対しています.com/json? –

+0

私ははっきり理解できません。あなたは、JSON.Netを介してオブジェクトの配列にシリアル化された入力文字列を持っていると言っていますか?>逆シリアル化で元の文字列を返すことはありません。それは...ですか? – RBT

答えて

1

結果のJSONオブジェクトは、匿名型とLINQでカスタマイズできます。このコードを試してください:

var test = new Test {fields = new List<Field>()}; 
test.fields.Add(new Field {name = "f1", value = "v1"}); 
test.fields.Add(new Field {name = "f2", value = "v2"}); 

var json = JObject.FromObject(new { fields = test.fields.Select(f => new {field = f}).ToArray() }) 
    .ToString(); 

json変数は次のようになります。

{ 
    "fields": [ 
    { 
     "field": { 
     "name": "f1", 
     "value": "v1" 
     } 
    }, 
    { 
     "field": { 
     "name": "f2", 
     "value": "v2" 
     } 
    } 
    ] 
} 
+0

これは、このタスクを実行するための最も読めない非効率な方法です... – Gusman

3

は、このウェブサイトhttp://json2csharp.comを使用して、自動的にすべてのクラスを生成します。そこにあなたのjsonをコピーして貼り付けてください。

0

あなただけのクラスレベル逃した://www.newtonsoft:

public class Test 
{ 
    public List<FieldHolder> fields; 
} 

public class FieldHolder 
{ 
    public Field field { get; set; } 
} 

public class Field 
{ 
    public string name { get; set; } 
    public string value { get; set; } 
} 
関連する問題