React组件,可以解析并显示各种形式的JSON内容

它使用递归的方式遍历JSON对象,并将其渲染为可展开的树形结构。

import React, { useState } from 'react';

const JsonViewer = ({ data }) => {
  const [expanded, setExpanded] = useState(false);

  const handleClick = () => {
    setExpanded(!expanded);
  };

  const renderNode = (key, value) => {
    if (typeof value === 'object' && value !== null) {
      return <JsonViewer data={value} />;
    } else {
      return <span>{value}</span>;
    }
  };

  const renderTree = (data, level = 0) => {
    const keys = Object.keys(data);

    return keys.map((key) => {
      const value = data[key];
      const isObject = typeof value === 'object' && value !== null;
      const hasChildren = isObject && Object.keys(value).length > 0;

      const node = (
        <div style={{ marginLeft: level * 20 }}>
          {isObject && (
            <button onClick={handleClick}>
              {expanded ? '-' : '+'}
            </button>
          )}
          <strong>{key}: </strong>
          {renderNode(key, value)}
        </div>
      );

      if (isObject && expanded && hasChildren) {
        return (
          <div key={key}>
            {node}
            {renderTree(value, level + 1)}
          </div>
        );
      } else {
        return <div key={key}>{node}</div>;
      }
    });
  };

  return <div>{renderTree(data)}</div>;
};

export default JsonViewer;

使用该组件时,只需将要显示的JSON对象传递给data属性即可:

import React from 'react';
import JsonViewer from './JsonViewer';

const App = () => {
  const sampleJson = {
    name: 'John',
    age: 30,
    hobbies: ['reading', 'coding', 'swimming'],
    address: {
      street: '123 Main St',
      city: 'New York',
      country: 'USA'
    }
  };

  return (
    <div>
      <h1>JSON Viewer</h1>
      <JsonViewer data={sampleJson} />
    </div>
  );
};

export default App;

这样,传入的sampleJson将会以树形结构显示在页面上。你可以展开和折叠每个对象,并且可以根据需要传入不同的JSON对象进行查看和修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以给你提供一个简单的解析Excel文件的React组件代码,这个组件使用了第三方库`xlsx`进行Excel文件的解析。 首先需要安装`xlsx`库: ``` npm install xlsx ``` 然后在React组件中引入该库: ```javascript import XLSX from 'xlsx'; ``` 接下来,我们可以编写一个组件,其核心代码如下: ```javascript import React, { useState } from 'react'; import XLSX from 'xlsx'; function ExcelParser() { const [data, setData] = useState([]); const handleFileUpload = (e) => { const file = e.target.files[0]; const reader = new FileReader(); reader.readAsArrayBuffer(file); reader.onload = (e) => { const bufferArray = e.target.result; const wb = XLSX.read(bufferArray, { type: 'buffer' }); const wsname = wb.SheetNames[0]; const ws = wb.Sheets[wsname]; const data = XLSX.utils.sheet_to_json(ws); setData(data); }; }; return ( <div> <input type="file" onChange={handleFileUpload} /> <table> <thead> <tr> {data[0] && Object.keys(data[0]).map((key, index) => ( <th key={index}>{key}</th> ))} </tr> </thead> <tbody> {data.map((row, index) => ( <tr key={index}> {Object.values(row).map((cell, index) => ( <td key={index}>{cell}</td> ))} </tr> ))} </tbody> </table> </div> ); } export default ExcelParser; ``` 这个组件包含一个`<input>`元素,用于上传Excel文件。当用户选择文件后,我们使用`FileReader`读取文件,并使用`XLSX.read()`方法将其解析为Workbook对象。然后,我们使用`XLSX.utils.sheet_to_json()`方法将Workbook对象中的Sheet转换为JSON数据,最后将其存储在组件的状态中。在渲染过程中,我们将JSON数据渲染为一个HTML表格。 需要注意的是,这个组件只适用于解析xlsx格式的Excel文件,如果需要解析其他格式的Excel文件,需要使用相应的库进行解析
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值