我必须自定义一个使用.net 2.0的软件。我的任务是集成JSON REST API。出于这些目的,我尝试使用json.net,它可以很好地进行调用。试图解析结果,我想出了这个:
using (StreamReader responseReader = new StreamReader(webStream))
{
try
{
JsonTextReader jsonreader = new JsonTextReader(responseReader);
while (jsonreader.Read())
{
if (jsonreader.Path == "data.key" && jsonreader.TokenType == JsonToken.String) return jsonreader.Value.ToString();
}
throw new Exception("no token found in answer");
}
catch (Exception)
{
// error handling
throw;
}
}
这在较新版本的Json.NET上运行良好。遗憾的是,JsonTextReader.Path在此版本(3.5)中不可用,因此无法升级。如何解析结果以接收attributesdata->key下的给定令牌?
响应看起来像这个
{"状态":{"代码":0,"httpStatus":200,"text":"请求提交成功","成功":true},"数据":{"key":"dIwbU9ZjQDH6P95aMqs%2Bh%AKLA22%2ByeY2R7PC6IknkWC%2BrmcN%2Bm5F3WNBA027gTm%0D%0A2zp5NGC1X2NON72A7N%2BZjB2fxJizUg0paiVdWlv4K1ZSKLlIGprTVoaMHqA1%0D%0ACFCHCNv6E%0D%0A"},"成功":true}
替换此:
while (jsonreader.Read())
{
if (jsonreader.Path == "data.key" && jsonreader.TokenType == JsonToken.String)
return jsonreader.Value.ToString();
}
这个:
JObject obj = JObject.Parse(json);
return obj["data"]["key"].ToString();