在 ASP.NET MVC 中解析 JSON 值时出错?

2024-03-25

我正在尝试使用 StackOverflow 的搜索 API 来搜索问题。

我正在使用此操作来执行解析:

public ActionResult StackExchange(string sq)
{
    string url = "http://api.stackoverflow.com/1.1/search?intitle=" + sq + "&order=desc";    
    var client = new WebClient();
    var response = client.DownloadString(new Uri(url));
    JObject o = JObject.Parse(response);// ERROR
    int total = (int)o["total"];
    return View(total);
}

这是我试图解析的 JSON url:

我正在尝试提取以下数据:

`"total": 3` , 
`"question_timeline_url": "/questions/10868557/timeline",`
`"title": "Asp.net custom 404 not working using Intelligencia rewriter"`

其给出的错误为:Newtonsoft.Json.JsonReaderException:解析值时遇到意外字符: 。路径 '',第 0 行,位置 0。

异常的原因可能是什么?我之前用过同样的方法,效果很好。

请建议。


尝试以下方法。

使用 NuGet 并引用 JSON.NET 包。我看到你已经这样做了。

撰写请求并获取响应。

string url = "http://api.stackoverflow.com/1.1/search?intitle=test&order=desc";
var request = (HttpWebRequest) WebRequest.Create(url);
var response = request.GetResponse();

您从 Stack Exchange API 收到的响应已被压缩!您首先需要解压缩它,然后才能读取 JSON 响应。这就是您收到异常的原因。

让我们创建一个方法来完成这个任务。为此,.NET 为我们提供了方便的 GZipStream 类型。

private string ExtractJsonResponse(WebResponse response)
{
    string json;
    using (var outStream = new MemoryStream())
    using (var zipStream = new GZipStream(response.GetResponseStream(),
        CompressionMode.Decompress))
   {
        zipStream.CopyTo(outStream);
        outStream.Seek(0, SeekOrigin.Begin);
        using (var reader = new StreamReader(outStream, Encoding.UTF8))
        {
            json = reader.ReadToEnd();
       }
    }
    return json;
}

现在您可以从响应中提取 JSON 数据。

var json = ExtractJsonResponse(response);

现在您可以解析返回的数据。

JObject o = JObject.Parse(json);
int total = (int)o["total"];

PS:我建议您使用今年早些时候发布的 API 2.0 版本。

https://api.stackexchange.com/docs https://api.stackexchange.com/docs

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 ASP.NET MVC 中解析 JSON 值时出错? 的相关文章

随机推荐

  • Avro 架构中嵌套记录的默认值

    这个问题 答案 如何在 Avro 模式中嵌套记录 https stackoverflow com questions 11764287 how to nest records in an avro schema 澄清了如何嵌套复杂类型 在本
  • 针对 DBPedia 的 SPARQL 查询以获取项目的所有属性值

    我是语义网新手 我想使用 SPARQL 查询从 DBPedia 检索 apple 的所有属性值对 下面我写了查询http dbpedia org sparql http dbpedia org sparql编辑器 但它没有返回任何结果 你能
  • 启动rails服务器时出错[重复]

    这个问题在这里已经有答案了 我最近格式化了我的 Windows 机器并安装了ruby and rubyonrails 当我使用创建新的 Rails 项目时rails new FirstApp它工作正常 但是当我尝试使用启动 Rails 服务
  • 线程的cpu使用率

    如何在c 中获取 net中线程的cpu使用率 Check 如何获取Windows上每个线程的CPU使用率 win32 https stackoverflow com questions 1393006 how to get the cpu
  • VBA for Word 中的查找/替换字符限制解决方法

    我有一个基本的 vbscript 可以在 microsoft word 中查找和替换 但是我无法超过一定数量的字符 我认为是 256 个 我想知道是否有人知道解决这个问题的方法 以下是我正在使用的脚本示例 Sub FixedReplacem
  • iOS5 UINavigationBar 显示提示时背景图像问题

    我正在使用 iOS 5 中的新外观代理来使用背景图像来设计 UINavigationBar 的样式 UINavigationBar appearance setBackgroundImage UIImage imageNamed ZSNav
  • 你能在NSView上设置根层的anchorPoint吗?

    是否可以修改anchorPoint根上的属性CALayer层支持的NSView 我有一个叫做myView似乎每次我设置anchorPoint 它会在下一个运行循环中被覆盖 我正在这样做 NSView myView myView alloc
  • Facebook 点赞:未捕获类型错误:对象 # 没有方法“提供”

    我最近添加了 facebook like 按钮 但以下代码在 chrome 中返回错误 Uncaught TypeError Object has no method provide div div
  • 如何将 Ilist 转换为 ArrayList?

    我可以投吗IList into ArrayList 如果是的话我该怎么办 IList alls RetrieveCourseStudents cf ArrayList a ArrayList alls 那是对的吗 有错误 无法转换类型的对象
  • 如何在文本输入中集中文本

    一个简短的问题 有没有办法在react native中集中文本Textinput 这是 jsx 中的标记
  • 如何使用 Node.js zlib 模块和选项?

    我需要使用 zlib 以极端压缩级别压缩 Node js 中的缓冲区 输出的标头应为 78 DA 除非我遗漏了什么 否则 Node js 文档并没有真正描述如何使用 zlib Deflate 类 它不接受任何参数 http nodejs o
  • wkhtmltopdf 段错误

    我正在尝试将 wkhtmltopdf 放到 virtualbox ed ubuntu 12 04 64 位服务器上 到目前为止还没有运气 存储库中的包想要运行 xserver 和静态版本 wkhtmltopdf google com tes
  • JavaScript - 平滑移动/调整大小

    如何在一段时间内实现对象的平滑调整大小或移动 我应该以小于像素的单位更改对象的位置吗 我目前正在使用 setTimeout 进行计时 是否有比 setTimeout 在一段时间内移动对象更有效的方法 使用 jQuery 怎么样 animat
  • 函数式语言中的多线程? (序言)

    当我的朋友在学校开始学习 Prolog 时 我嘲笑他学习了一门无用的语言 然而 他向我展示了一些我从来不知道可能发生的东西 我想知道这个技术从何而来 技术是这样的 permutation List isAMember X List dele
  • UITableViewCell 复选标记在点击时打开和关闭

    我正在处理表格视图 我希望能够点击每个单元格 点击时 它会在单元格上显示一个复选标记 现在我有一些代码可以实现此功能 checkmarks when tapped func tableView tableView UITableView d
  • FlutterFirebaseCorePlugin.java 使用或覆盖已弃用的 API

    好吧 我运行我的程序时没有导入 firebase core firebase auth 和 cloud firestore 我的代码运行得很好 但是我使用 firebase 注册了我的应用程序 它仍然运行得很好 但是一旦我导入Firebas
  • 在 NLTK 3.0 中使用 Wordnet 从 Synset 中提取单词

    前段时间 SO上有人问如何检索给定同义词集的单词列表 https stackoverflow com questions 24664250 how do i print out just the word itself in a wordn
  • 常量字符串将存储在内存中的哪里?

    有时我们在 C 编程中使用这种类型的代码 char p Sam 这里常量字符串 Sam 的地址将被存储在字符指针p中 现在在这里我想问一下 Sam 会存放在哪里 字符串 Sam 通常存储在与全局常量相同区域的全局内存中 但是 如果您这样做
  • 如何检查背景图像是否已加载?

    我想在 body 标签上设置背景图像 然后运行一些代码 像这样 body css background image http picture de image png load function alert Background image
  • 在 ASP.NET MVC 中解析 JSON 值时出错?

    我正在尝试使用 StackOverflow 的搜索 API 来搜索问题 我正在使用此操作来执行解析 public ActionResult StackExchange string sq string url http api stacko