【问题标题】:Convert HTML to JSON in react-native在 react-native 中将 HTML 转换为 JSON
【发布时间】:2019-05-27 05:11:29
【问题描述】:

我想将从网络请求收到的 HTML 转换为 JSON,以便我可以轻松读取值。
如果有办法直接从 HTML 读取值,请在评论中告诉我
我找到了这个库:https://github.com/andrejewski/himalaya
但是当我尝试在我的应用程序中运行该示例时,我收到错误 Cannot read property prototype of undefined 所以我认为这个库在 react-native 中不起作用,因为它包含一个核心 Node JS 模块。
这是代码:

import {parse} from 'himalaya'
const html = this.state.html
const json = parse(html)
console.log('????', json)

一些示例 html 可能是:

<div class='post post-featured'>
  <p>Himalaya parsed me...</p>
  <!-- ...and I liked it. -->
</div>

这个 html 的预期输出是:

[{
  type: 'element',
  tagName: 'div',
  attributes: [{
    key: 'class',
    value: 'post post-featured'
  }],
  children: [{
    type: 'element',
    tagName: 'p',
    attributes: [],
    children: [{
      type: 'text',
      content: 'Himalaya parsed me...'
    }]
  }, {
    type: 'comment',
    content: ' ...and I liked it. '
  }]
}]

是否有另一种方法/库可以在 react native 中将 HTML 转换为 JSON?

【问题讨论】:

  • 如果您提供您编写的代码,我可能会提供帮助。看来您需要在客户端使用window.himalaya.parse(html)
  • 我添加了代码(我直接从文档中获取)
  • 你有权限修改服务器的响应吗?
  • 您是否有一些要转换的 html?
  • 我无权修改服务器的响应,这是一个 3rd 方 api。

标签: javascript html json react-native


【解决方案1】:

使用你在 React Native 中提到的包没有问题。鉴于您已遵循所有必需的步骤,一切都会按预期进行:

安装himalaya:

cd project_dir
npm install himalaya

在文件顶部添加所需的import

import {parse} from 'himalaya';

在代码中某处的state 中设置html 属性,解析 HTML 结果之前:

this.setState = { html: '&lt;div&gt;Example HTML content&lt;/div&gt;' };

使用parse 对象将 HTML 转换为 JSON:

const html = this.state.html;
const json = parse(html);
alert(JSON.stringify(json));

您可以在this Snack 中检查上述代码是否正常工作。

【讨论】:

  • 有趣。该库在 React Native 中工作真是太好了,尽管我不明白它会如何尝试访问 prototype。它显然与该特定行相关,但我确实希望这可行!
  • @Arct 确实问题中指定的错误似乎并不相关,但问题可能是由一些放错的代码引起的。我希望链接的 Snack 将引导 OP 将附加行放在正确的位置,并可能其他人在谷歌上搜索这个问题以找到快速教程。
  • 我想这是真的。我很好奇究竟是什么导致了错误,但老实说,它可能是任何东西。但是,您的回答已经证明该库有效,这很棒。该示例是收集一些示例代码的好方法 :) 希望 OP 觉得这很有用!
  • 我想通了!我将 expo 升级到 v31.0.0 并开始工作。谢谢!
猜你喜欢
  • 2019-04-30
  • 1970-01-01
  • 2020-03-09
  • 2020-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 2022-01-25
相关资源
最近更新 更多