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

如何在JSON中存储食谱?现有写法是否存在更优实现方案?

首先先纠正你写法里的两个基础问题:

  1. 你给出的示例是JavaScript对象,不是标准JSON格式。如果要存储为标准JSON,需要满足键用双引号包裹、字符串用双引号、不能保留尾逗号、换行统一用转义符\n,不能直接在字符串里写换行。
  2. 换行转义符是反斜杠加n即\n,你写的/n是错误写法。

直接在字符串里存储转义换行符的合理性

这种做法完全合理,是JSON标准支持的通用处理方式,适合仅需纯文本展示的简单场景,实现成本极低。渲染时只要给元素加white-space: pre-line的CSS属性,或者把字符串里的\n替换为<br>标签,就能正常展示换行效果。

如果有更复杂的需求,可以参考以下更适配场景的处理方案:


方案1:结构化数组存储(推荐需要单独操作内容的场景)

如果后续需要对步骤、食材做单独处理,比如给步骤加勾选状态、单独修改某一项食材、统计步骤数量等,建议把多行内容拆分为字符串数组存储:

{
  "id": 1,
  "title": "欧姆蛋",
  "recipe": [
    "Do something",
    "Do something else",
    "Do something else after that",
    "Do something else after that"
  ],
  "ingredients": [
    "Ingredient1",
    "Ingredient2",
    "Ingredient3"
  ],
  "date": ""
}
  • 优势:结构化程度高,后续操作单个条目不需要做字符串切割,扩展性强
  • 劣势:纯文本展示场景下需要循环输出数组,比直接渲染字符串多一点代码量

方案2:Markdown格式存储(推荐需要富文本效果的场景)

如果食谱需要支持加粗、列表、图片等富文本效果,可以直接把内容存为Markdown格式的字符串,后续用Markdown解析器渲染即可,天然支持换行、格式标记,不需要额外做格式兼容。

方案3:JS场景用模板字符串简化写法

如果你只是在JavaScript代码里定义对象不需要转成标准JSON存储,可以直接用反引号包裹的模板字符串,不用手动写\n就能支持多行内容:

const recipe = {
  id: 1,
  title: '欧姆蛋',
  recipe: `Do something
Do something else
Do something else after that
Do something else after that`,
  ingredients: `Ingredient1
Ingredient2
Ingredient3`,
  date: ''
}

选择建议

  • 仅需纯文本展示:直接存带\n的字符串即可,完全符合规范
  • 需要单独操作步骤/食材条目:优先选数组存储方案
  • 需要富文本展示:选Markdown存储方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 22:36:03