【问题标题】:serialization in json.NET doesn't workjson.NET 中的序列化不起作用
【发布时间】:2012-11-21 14:43:58
【问题描述】:
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[] {...}}); 一切正常。

【问题讨论】:

  • 请发布带有堆栈跟踪的错误消息
  • 你为什么不简单地使用JsonConvert.SerializeObject(obj)
  • 请不要这样更新您的问题。在对原始问题的编辑中包含异常文本和堆栈跟踪。如果链接断开,这个问题对于任何未来的发现者来说都变得不那么有价值。 =)

标签: c# .net json serialization


【解决方案1】:

异常的原因是你告诉 writer 你要写一个对象,而你正在写一个数组。试试这样:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    相关资源
    最近更新 更多