用Json.Net丢弃json对象后的垃圾字符 [英] Discarding garbage characters after json object with Json.Net
问题描述
我必须使用一个由愚蠢的猴子实现的所谓的Web服务,该猴子在正确的Json响应后会返回一些垃圾. 像这样:
I have to consume a so called web service implemented by a dumb monkey which is returning some garbage after the proper Json response. Something like this:
{
"Property1": 1,
"Property2": 2,
"Property3": 3
}<?xml version='1.0' ?>Maybe some other gibberish nonsense I wish to discard.
现在,我可以搜索"<?xml"
并拆分,但是我想知道是否可以使用流读取器或其他方法读取直到结束}
,然后丢弃其余的内容
Now, I could just search for "<?xml"
and split, but I was wondering if I can use a stream reader or something to read up to the closing }
and then discard the rest.
我正在使用C#和Json.Net.
I'm using C# and Json.Net.
推荐答案
You can also set JsonSerializerSettings.CheckAdditionalContent = false
to tell the serializer to ignore any content after the end of the deserialized JSON object:
var result = JsonConvert.DeserializeObject<Dictionary<string, long>>(json, new JsonSerializerSettings { CheckAdditionalContent = false })
奇怪的是,尽管默认值似乎已经是false
,但仍然有必要明确地执行此操作,因为
Oddly enough it is necessary to do this explicitly despite the fact that the default value seems to be false
already, since the underlying field is nullable.
这篇关于用Json.Net丢弃json对象后的垃圾字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!