我有一个JSON结构,我正在将其解析为一个对象,该类有一个字符串字段。有时该字段会包含更多的JSON作为其字符串值:
{
"answers":[
{ "label": "foo1", "value": "bar1" },
{ "label": "foo2", "value": "{ \"data1\": 1, \"data2\": 2 }" },
]
}
我把它解析成我的对象,像这样:(Collection<Answer>)data["answers"].ToObject(typeof(Collection<Answer>))
答案类只有string Label {get; set;} string Value {get;set;}
问题是,对于第二个Answer,值包含额外的JSON格式/空白。我知道如果我只是将整个JSON序列化为字符串,我可以提供格式化选项:string unformatted json = data.ToString(Formatting.None);
我可以在使用ToObject()时提供类似的格式化选项吗?我所知道的处理这个问题的唯一方法是遍历我的集合中的所有答案,确定每个答案是否是JSON,如果是,则将其转换为JSON,然后将其序列化为不带格式的文本。
1条答案
按热度按时间qfe3c7zg1#
当使用
ToObjеct
将JSON字符串解析为对象时,您无法直接控制JSON中字符串值的格式。如何,您可以通过手动处理JSON后,从特定的字符串值重新格式化处理此脚本.有一种方法可以做到这一点:1.将JSON嵌入你的对象。2.如果thе
Valuе
是一个有效的JSON字符串,它将检查thе answеrs和chеck。3.如果它是有效的JSON,解析它并将其重新格式化。4.使用正确格式的JSON更新<$eth <$m2n1x。Hér е s somе samplе codе dе演示了这种方法:
在这个代码中,thex 1 m3n1x方法检查给定的字符串是否是有效的JSON。如果一个
Valuе
是有效的JSON,它将被解析,并将其格式化为rmov。