个块
存储富文本内容的JSON对象由两个主要部分组成: 块 和 entityMaps。
块是一个JSON对象,它表示一行带格式的文本。 由于单个自定义字段可以包含多行文本,因此每行文本都有自己的块,每个块在名为 块 的父数组中表示为一个元素。
示例: 在此,自定义字段中的每一行文本映射到数组块中的块元素
由于每个块元素也是JSON对象,因此每个块由元素组成:key、text、type、depth、inlineStyleRanges、entityRanges 和 data。 其中每个元素均具有以下功能:
- Key 是该块的唯一标识符。 键用于通过entityMap映射一行文本。 有关entityMap的详细信息,请参阅本文档的entityMap部分。
- 文本 是从自定义字段中存储的文本内容行。
- 类型 描述所表示的文本类型。 例如,存储在块中的文本行可以是列表的一部分。 如果该行文本属于未排序列表,则其类型将定义为:unordered-list-item。
- 列表当前不受支持,但应该很快就会可用。
- 深度 当折线是已排序或未排序列表的嵌套部分时,此参数定义折线条的深度。
- inlineStyleRanges 是一个数组,它描述应用于当前块表示的文本行的格式类型。
示例: 以下是一个inlineStyleRanges数组,它描述了字符级别的每个样式。 在本例中:从索引0 (偏移量: 0)开始的9个字符(长度: 9)应用了样式 粗体:
如果将多种类型的格式应用于单行,则样式将映射到 inlineStyleRanges 数组中的其他元素。
示例: 下面是存储包含混合格式的文本行时块的外观:粗体文本和斜体
{
"key":"a9ic6",
"text":"Bold text and Italics",
"type":"unstyled",
"depth":0,
"inlineStyleRanges":[
{
"offset":0,
"length":21,
"style":"BOLD"
},
{
"offset":14,
"length":7,
"style":"ITALIC"
}
],
...
},
entityMap和entityRanges
数据块可能包含实体,例如超链接或其他类型的样式化格式,这些实体已连接到位于自定义文本字段之外的数据源。
示例
从JSON检索纯文本
提交具有富文本格式的自定义字段时,所有文本都存储在数组 块 中。 但是,全文的每一行都存储在组成父数组 块 的每个单独块元素中的 文本参数 中。 因此,为了检索全文,需要提取每一行单独的文本并将其拼合在一起。 这可以通过循环遍历块中的所有元素并将每个文本参数连接在一起并使用行分隔符(\n)来实现。
示例: 以下是您的JS可能如下所示:
const parameterValue = JSON.parse('{"blocks":[{"key":"dpfce","text":"This is a regular text","type":"unstyled","depth":0,"inlineStyleRanges":[],"entityRanges":[],"data":{}},{"key":"a9ic6","text":"Bold text and regular text","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":9,"style":"BOLD"}],"entityRanges":[],"data":{}},{"key":"1b2a4","text":"Italic text and regular text","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":11,"style":"ITALIC"}],"entityRanges":[],"data":{}},{"key":"4dle1","text":"Underline text and regular text","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":14,"style":"UNDERLINE"}],"entityRanges":[],"data":{}},{"key":"10mip","text":"With all formating and regular text","type":"unstyled","depth":0,"inlineStyleRanges":[{"offset":0,"length":18,"style":"BOLD"},{"offset":0,"length":18,"style":"ITALIC"},{"offset":0,"length":18,"style":"UNDERLINE"}],"entityRanges":[],"data":{}}],"entityMap":{}}');
let plainText = "";
parameterValue.blocks.forEach((block) => {
plainText = plainText.concat(block.text, "\n");
})
console.log(plainText)