简体   繁体   中英

serialization in json.NET doesn't work

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();
}

Could somebody tell me please why this code doesn't work? without line serializer.Serialize(jw, new bool[] {...}}); everything is working fine.

The cause of exception is that you are telling writer that you will write an object and you are writting an array. Try like this:

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();

Or as an alternative like this:

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();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM