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

如何将Mock Data JSON中的'转为单引号?真实URL调用是否正常?

问题解答:JSON字符实体转换与真实接口的特殊字符显示

处理本地Mock数据中的字符实体

方法1:通用HTML实体解码

如果Mock数据里存在多种HTML实体(不止'),可以借助浏览器的DOMParser做统一解码:

先定义一个工具函数:

function decodeHtmlEntities(text) {
  const parser = new DOMParser();
  const doc = parser.parseFromString(`<div>${text}</div>`, 'text/html');
  return doc.querySelector('div').textContent;
}

然后在useQuery获取数据后,对每个视频的标题进行处理:

export default function Home() {
  const {
    isLoading,
    error,
    data: bts,
  } = useQuery(["bts"], async () => {
    const rawData = await fetch("data/bts.json").then(res => res.json());
    // 遍历处理所有视频的标题
    rawData.items = rawData.items.map(video => ({
      ...video,
      snippet: {
        ...video.snippet,
        title: decodeHtmlEntities(video.snippet.title)
      }
    }));
    return rawData;
  });

  if (isLoading) return <p>Loading...</p>;
  if (error) return <p>{error}</p>;

  return (
    <div className={styles.video}>
      {bts.items.map((video) => (
        <VideoCard
          key={video.id.videoId}
          id={video.id.videoId}
          thumbnails={video.snippet.thumbnails.medium}
          title={video.snippet.title}
          channel={video.snippet.channelTitle}
          publish={video.snippet.publishTime}
        />
      ))}
    </div>
  );
}

方法2:针对性正则替换

如果只需要处理&#39;(单引号实体),用正则替换更轻量:

function decodeApostrophe(text) {
  return text.replace(/&#39;/g, "'");
}

替换逻辑和上面一致,把decodeHtmlEntities换成这个函数即可。

调用真实URL时的特殊字符显示

真实API接口(比如你用到的YouTube Data API)返回的JSON数据通常不会包含HTML实体,会直接使用原始的特殊字符(比如单引号)。因为JSON规范允许字符串内包含单引号(只要整个字符串用双引号包裹),所以调用真实URL时,拿到的数据可以直接正常显示特殊字符,不需要额外处理解码逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:02:35