格式化 JSON为字符串,并在页面上显示

    PrintJSON.js

    1. import React from 'react';
    2. import PropTypes from 'prop-types';
    3. import styled from './index.module.less';
    4. const JsonStringify = data => JSON.stringify(data, null, 2);
    5. PrintJson.propTypes = {
    6. value: PropTypes.oneOfType([
    7. PropTypes.string,
    8. PropTypes.object,
    9. ]),
    10. };
    11. PrintJson.defaultProps = {
    12. value: '',
    13. }
    14. function PrintJson({ value }) {
    15. if([null, undefined, false].includes(value)) return null;
    16. let data = '';
    17. if(typeof value === 'string') {
    18. try {
    19. data = JSON.parse(value);
    20. } catch (e) {
    21. data = value;
    22. }
    23. }
    24. return (
    25. <div className={styled.wrap}>
    26. <pre className={styled.print}>
    27. {(typeof data === 'string') ? data : JsonStringify(data)}
    28. </pre>
    29. </div>
    30. );
    31. }
    32. export default React.memo(PrintJson);

    index.module.less

    1. .wrap {
    2. margin-bottom: 16px;
    3. padding: 16px;
    4. background-color: rgba(245, 245, 245, .5);
    5. }
    6. .print {
    7. width: 100%;
    8. white-space: pre-wrap;
    9. word-wrap: break-word;
    10. }