在c#(.NET2.0/JSON.NET35)中解析JSON



我必须自定义一个使用.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}

Json.Net v3.5现在已经相当旧了,但类似的东西应该可以工作。

替换此:

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

相关内容

  • 没有找到相关文章

最新更新