【问题标题】:Cannot get a property of a Json-String无法获取 Json-String 的属性
【发布时间】:2015-07-08 16:23:03
【问题描述】:

我从 table-API 得到一个 Json-String:

JS

var data = JSON.stringify($table.bootstrapTable('getSelections'));
console.log(data);

Output:

[{"name":"Chemical Entity Recogniser (ChER)","state":true}]

现在我想获取“名称”的值。我该怎么做呢?

【问题讨论】:

  • 如果你想从中获取任何信息,你需要反序列化数据
  • 如果要从数据中获取值,为什么要使用.stringify()
  • 我在这里的例子中使用它:issues.wenzhixin.net.cn/bootstrap-table/#methods/…
  • @torazaburo data[0].name 将给出未定义的值。输出为 JSON 字符串,需要解析!请停止在没有有效答案的情况下投票!
  • @torazaburo 我将 JSON.stringify 的结果称为“输出”。这篇文章的有趣之处在于他得到了他的“Json-String”并且他需要“name”的值。我只是向他展示了这样做的方法!你能检查一下你的反对票吗?

标签: javascript json bootstrap-table


【解决方案1】:

您可以直接使用 $table.bootstrapTable('getSelections')[0].name 来获取名称值

或者如果您仍想使用 stringify,请将其转换为 JSON 字符串并从中获取名称值,您可以这样做:

var data = JSON.stringify($table.bootstrapTable('getSelections'));
var obj = JSON.parse(data);
console.log(obj[0].name);

输出: 化学实体识别器 (ChER)

希望这会有所帮助!

【讨论】:

  • 你为什么要字符串化然后立即解析?
  • JSON.stringify 将对象转换为 JSON 文本并将该 JSON 文本存储在字符串中。 JSON.parse 将一串 JSON 文本转换为一个对象。
  • 对,所以JSON.stringify 后跟JSON.parse 的效果是空操作。你为什么建议做空操作?您的obj 与您开始使用的完全相同,即$table.bootstrapTable('getSelection')
  • @torazaburo 我同意!我已经编辑了我的帖子。现在还好吗?
【解决方案2】:

结果

$table.bootstrapTable('getSelections')

只是一个普通的旧 JavaScript 对象。这不是 JSON。无需对其进行字符串化。字符串化用于将对象转换为字符串,以便将其存储或发送到某处。那不是你想做的。只需直接从 JavaScript 对象访问您想要的值:

var data = $table.bootstrapTable('getSelections');
data[0].name

如果您在执行此操作时不必要地对该响应进行字符串化,那么您只需要转身再次解析它,正如您的“已接受”答案错误地暗示的那样,这只会给您返回对象你从一开始就开始了。

【讨论】:

    【解决方案3】:

    尝试使用:

    var o = JSON.parse(data)
    

    JSON.parse() 将 JSON 对象转换为 Javascript 对象...

    【讨论】:

    • o 给我输出 'o[object Object]'
    • 那么如何获取name属性的值呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-30
    • 2017-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多