-1
JsonSerializer serializer = new JsonSerializer();
jw.WritePropertyName("info"); 
serializer.Serialize(jw, res);
if (res[2] == true)
{
    jw.WritePropertyName("healer"); jw.WriteStartObject();
    jw.WritePropertyName("running"); 
    jw.WriteValue(res[1] == true ? (checkBox1.IsChecked == true ? true : false) : false);
    jw.WritePropertyName("main"); jw.WriteStartObject();
    serializer.Serialize(jw, new bool[] { true, true, true, true, true, true });
    jw.WriteEndObject(); // here
    jw.WriteEndObject();
}

このコードが機能しない理由を教えてください。行がなければ、serializer.Serialize(jw, new bool[] {...}});すべて正常に動作しています。

4

1 に答える 1

1

例外の原因は、オブジェクトを書き込むことをライターに伝え、配列を書き込んでいることです。このようにしてみてください:

jw.WritePropertyName("healer");
jw.WriteStartObject();
jw.WritePropertyName("running"); 
jw.WriteValue(res[1] == true ? (checkBox1.IsChecked == true ? true : false) : false);
jw.WritePropertyName("main");
serializer.Serialize(jw, new bool[] { true, true, true, true, true, true });
jw.WriteEndObject();

または、次のような代替手段として:

jw.WritePropertyName("healer");
jw.WriteStartObject();
jw.WritePropertyName("running"); 
jw.WriteValue(res[1] == true ? (checkBox1.IsChecked == true ? true : false) : false);
jw.WritePropertyName("main");
var myArray = new bool[] { true, true, true, true, true, true };
jw.WriteStartArray();
foreach (bool myValue in myArray)
{
    jw.WriteValue(myValue);
}
jw.WriteEndArray();
jw.WriteEndObject();
于 2012-11-21T15:03:15.207 に答える