適切なJsonレスポンスの後にいくつかのゴミを返すダンサルによって実装されたいわゆるWebサービスを消費する必要があります。このような 何か:Json.Netでjsonオブジェクトの後にガーベジ文字を破棄する
{
"Property1": 1,
"Property2": 2,
"Property3": 3
}<?xml version='1.0' ?>Maybe some other gibberish nonsense I wish to discard.
今、私はちょうど"<?xml"
と分割のために検索することができますが、私はまでの決算}
をを読み、その後、残りを廃棄するためにストリームリーダーか何かを使用することができる場合、私は思っていました。
私はC#とJson.Netを使用しています。 、いつものようにJson.Net FTW
public T ReadTypeAndDiscardTheRest<T>(string json)
{
using (var sr = new StringReader(json))
using (var jsonReader = new JsonTextReader(sr))
{
var token = JToken.Load(jsonReader);
return token.ToObject<T>();
}
}
[Test]
public void TestJsonDiscarding()
{
var json = @"{""Key"":""a"", ""Value"":""n""}<?xml>aaaa";
var kp = ReadTypeAndDiscardTheRest<KeyValuePair<string, string>>(json);
Assert.That(kp.Key, Is.EqualTo("a"));
Assert.That(kp.Value, Is.EqualTo("n"));
}
:私が知っていた
'<?xml'という部分文字列がjson内のものに含まれないことを保証できますか? '{" Property1 ":" <?xml version = '1.0'> "...} <?xml version = '1.0'> ....' –
http://stackoverflow.com/questions/524548/regular-expression-to-detect-semi-colon-terminated-c-for-while-loops/524624#524624試行されたソリューションを見て、 – Gusman
私は堅牢なソリューションを希望します。 Json.Netには多くの先進的な読者がいますので、標準のJsonConvertではなくJTokenを入手することができますか? –