You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用griddle-react时,如何将AJAX获取的JSON转为Griddle可读数组?

解决Griddle-React无法读取AJAX获取的JSON数据问题

看起来你是想把键值对格式的JSON对象转换成Griddle能用的数组,但代码里有几个关键问题,我帮你梳理下并给出修正方案:

问题分析

你的原始数据是类似 {"BTC": {"opening_price": "...", ...}, "ETH": {...}} 的键值对对象,但Griddle组件要求数据源是数组类型。你当前的代码存在这些问题:

  • 循环中每次调用setState,会触发多次组件更新,而且最终state.data只会保留最后一次循环的结果,不是完整的数据集
  • key[format]是完全错误的写法:key是字符串(比如"BTC"),format是JSON字符串,这样根本取不到有效数据
  • 不需要用JSON.stringify把数据转成字符串,Griddle需要的是原始的对象结构

修正后的转换函数

我帮你重写了convert函数,把键值对对象转换成Griddle能识别的数组格式:

function convert(obj) {
  console.log('原始数据:', obj);
  // 将键值对对象转换为数组,每个元素包含币种标识和对应行情数据
  const formattedData = Object.entries(obj).map(([currency, details]) => {
    // 把币种名称加入到数据对象中,方便在表格里展示
    return {
      currency: currency,
      ...details // 展开所有行情字段(比如opening_price、closing_price等)
    };
  });
  // 一次性更新state,避免多次不必要的组件渲染
  self.setState(() => ({ data: formattedData }));
}

代码说明

  • Object.entries(obj)会把你的原始对象转换成[["BTC", {...}], ["ETH", {...}]]这样的二维数组,每个子数组包含币种名称和对应的行情对象
  • 用map遍历这个二维数组,把币种名称和行情字段合并成一个新对象,这样每个数组元素就是Griddle能处理的一条数据
  • 最后一次性把整个数组设置到state中,确保Griddle拿到完整的数据集

配合Griddle组件使用

之后你可以在Griddle组件里直接使用这个数组,还可以指定要展示的列:

<Griddle
  data={this.state.data}
  columns={["currency", "opening_price", "closing_price"]} // 根据你的实际字段调整
/>

这样应该就能正常渲染数据啦!

内容的提问来源于stack exchange,提问作者pazta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:24:53