2017-03-29 26 views
-5

私はfolowing形式でJSON文字列を取得しようとしています:JSON文字列が正しくない形式

[{question: "Q1", answers : [{A1},{A2},{A3}], correctAnswers : [{false},{true},{true}]}] 

をしかし、私はこのフォーマットを取得しています:

[{"question":"Q1","answers":["A1","A2","A3"],"correctAnswers":[false,true,true]}] 

私は自分のコードを変更する必要がありますどのように希望のフォーマットを達成する。

var listQA = new List<QuestionAnswers>(); 

QuestionAnswers qa = new QuestionAnswers(); 
qa.question = "Q1"; 

qa.answers = new string[3]; 
qa.correctAnswers = new bool[3]; 

qa.answers[0] = "A1"; 
qa.answers[1] = "A2"; 
qa.answers[2] = "A3"; 

qa.correctAnswers[0] = false; 
qa.correctAnswers[1] = true; 
qa.correctAnswers[2] = true; 

listQA.Add(qa); 
output = JsonConvert.SerializeObject(listQA); 
+12

あなたの例JSONは有効な形式ではありません.... {A1}は有効ではありませんJSON ...あなたが得ている形式、つまり「A1」はJSONの文字列のようです。 – Milney

+0

リファレンス:http://www.json.org/ – Milney

+1

あなたの出力を使用してください。 'SerializeObject'はその仕事をする方法を知っています。 – Pikoh

答えて

1

短い答えではありません。中括弧はjsonオブジェクトを定義し、すべてのjsonオブジェクトはプロパティのキー値ペアの集合です。あなたのコードは次のように変更することができます:

[{question: "Q1", answers : [{"answer":"A1"},{"answer":"A2"},{"answer":"A3"}], correctAnswers : [{"answer":false},{"answer":true},{"answer":true}]}] 

しかし、あなたが望むものにすることはできません。また、あなたの例では、A1、A2とA3は文字列ではありませんが、文字列として渡したので、あなたがそれでやりたいことが分かりません。 jsonは構造を持ち、その構造の要素は意味を持ち、あなたの望む結果はその意味を迂回しようとしています。

関連する問題