添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
JSON 函数以文本形式返回数据结构的 JavaScript 对象表示法 (JSON) 表示形式,从而适合在网络上存储或传输。 [ECMA-404]( https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-404.pdf IETF RFC 8259 介绍了此格式,其已被 JavaScript 和其他编程语言广泛使用。

画布应用支持此表列出的 数据类型 ,并提供有关其文本表示的详细信息:

包含颜色的 8 位十六进制表示形式的字符串。 此表示形式采用格式 # rrggbbaa ,其中 rr 是红色分量, gg 是绿色, bb 是蓝色, aa 是 Alpha 通道。 对于 Alpha 通道, 00 是完全透明, ff 是完全不透明。 您可以将此字符串传递到 ColorValue 函数。 "#102030ff" 为用户语言使用适当的小数点分隔符的数字。 如果需要,将使用科学计数法。 1.345 包含 ISO 8601 yyyy-mm-dd 格式的日期的字符串。 "2019-03-31" DateTime 包含 ISO 8601 日期/时间的字符串。 以 UTC 表示的日期/时间值,如结尾的“Z”所示。 "2019-03-31T22:32:06.822Z" 包含 GUID 值的字符串。 字母为小写。 "751b58ac-380e-4a04-a925-9f375995cc40" 图片,媒体 如果指定了 JSONFormat.IncludeBinaryData ,媒体文件将以字符串编码。 使用 http: 或 https: URL 架构的 Web 引用不会被修改。 对内存中二进制数据的引用以 "data: mimetype ;base64,..." 格式编码。 内存中数据包括用户使用 Camera 控件捕获的图像,以及具有 appres: 和 blob: URL 架构的任何其他引用。 "data:image/jpeg;base64,/9j/4AA..." 为用户语言使用适当的小数点分隔符的数字。 如果需要,将使用科学计数法。 1.345 选择项的数字值,不是用于显示的标签。 使用数字值是因为它与语言无关。 包含 ISO 8601 hh:mm:ss.fff 格式的字符串。 "23:12:49.000" 字段及其值的逗号分隔列表,放在 { } 之间。 此表示法类似于画布应用中的记录,但名称始终在双引号之间。 此格式不支持基于多对一关系的记录。 { "First Name": "Fred", "Age": 21 } 记录的逗号分隔列表,放在 [ ] 之间。 此格式不支持基于一对多关系的表。 使用 JSONFormat.FlattenValueTables 选项,删除列名为 Value 的单列表的记录。 [ { "First Name": "Fred", "Age": 21 }, { "First Name": "Jean", "Age": 20 } ] 双选项的布尔值( true false ),不是用于显示的标签。 使用布尔值是因为它与语言无关。 false 超链接,文本 双引号之间的字符串。 此函数用反斜杠转义嵌入的双引号,将换行符替换为“\n”,并进行其他标准 JavaScript 替换。 "This is a string."

指定可选的 Format 参数来控制结果的可读程度,以及不支持的数据类型和二进制数据类型的处理方式。 默认情况下,输出尽可能紧凑,没有不必要的空格或换行符,并且不允许不支持的数据类型和二进制数据。 如果您指定了 & 运算符,可以组合多种格式。

JSONFormat 枚举 Description

使用 ShowColumns DropColumns 函数可控制结果包含哪些数据并删除不支持的数据类型。

由于 JSON 可能既占用内存又需要大量计算,因此只能在 行为函数 中使用此函数。 您可以将结果从 JSON 捕获到 变量 ,然后将其用于数据流。

如果列同时有显示名称和逻辑名称,结果将包含逻辑名称。 显示名称反映应用用户的语言,因此不适合将数据传输到通用服务。

JSON( 数据结构 [, 格式 ])

DataStructure –必需。 要转换为 JSON 的数据结构。 支持表、记录和基元值,任意嵌套。 格式 - 可选。 JSONFormat 枚举值。 默认值为 JSONFormat.Compact ,不添加换行符或空格,阻止二进制数据和不支持的列。
  • 插入 Button 控件,并将其 OnSelect 属性设置为以下公式。

    ClearCollect( CityPopulations,
        { City: "London",    Country: "United Kingdom", Population: 8615000 },
        { City: "Berlin",    Country: "Germany",        Population: 3562000 },
        { City: "Madrid",    Country: "Spain",          Population: 3165000 },
        { City: "Hamburg",   Country: "Germany",        Population: 1760000 },
        { City: "Barcelona", Country: "Spain",          Population: 1602000 },
        { City: "Munich",    Country: "Germany",        Population: 1494000 }
    ClearCollect( CitiesByCountry, GroupBy( CityPopulations, "Country", "Cities" ) )
    
  • 按住 Alt 键,并选择此按钮。

    CitiesByCountry 集合已使用此数据结构创建,您可以通过在文件菜单上选择集合,然后选择集合的名称来显示该集合。

    Set( CitiesByCountryJSON, JSON( CitiesByCountry ) )
    

    此公式将全局变量 CitiesByCountryJSON 设置为 CitiesByCountry 的 JSON 表示形式。

  • 按住 Alt 键,并选择此按钮。

  • 插入 Label 控件,然后将 Text 属性设置为此变量。

    CitiesByCountryJSON
    

    标签将显示此结果,所有结果都在一行中,没有空格,适合跨网络传输:

    "Cities": [{ "City": "London", "Population": 8615000 }], "Country": "United Kingdom" "Cities": [ { "City": "Berlin", "Population": 3562000 }, { "City": "Hamburg", "Population": 1760000 }, { "City": "Munich", "Population": 1494000 } "Country": "Germany" "Cities": [ { "City": "Madrid", "Population": 3165000 }, { "City": "Barcelona", "Population": 1602000 } "Country": "Spain"
  • 更改第二个按钮的公式,使输出更具可读性。

    Set( CitiesByCountryJSON, JSON(CitiesByCountry, JSONFormat.IndentFour ))
    
  • 按住 Alt 键,并选择第二个按钮。

    标签将显示可读性更强的结果。

    "Cities": [ "City": "London", "Population": 8615000 "Country": "United Kingdom" "Cities": [ "City": "Berlin", "Population": 3562000 "City": "Hamburg", "Population": 1760000 "City": "Munich", "Population": 1494000 "Country": "Germany" "Cities": [ "City": "Madrid", "Population": 3165000 "City": "Barcelona", "Population": 1602000 "Country": "Spain"

    base64 编码的图像和媒体

  • 添加 Image 控件。

    这个控件带有 SampleImage

  • 添加 Button 控件,并将其 OnSelect 属性设置为以下公式。

    Set( ImageJSON, JSON( SampleImage, JSONFormat.IncludeBinaryData ) )
    
  • 按住 Alt 键,并选择此按钮。

  • 添加一个标签,然后将 Text 属性设置为此变量。

    ImageJSON
    
  • 调整控件的大小,并根据需要减小字体大小,以显示大部分结果。

    标签将显示 JSON 函数捕获的文本字符串。

    "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxzdmcgdmVyc2lvbj0iMS4xIg0KCSB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWxuczphPSJodHRwOi8vbnMuYWRvYmUuY29tL0Fkb2JlU1ZHVmlld2VyRXh0ZW5zaW9ucy8zLjAvIg0KCSB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjI3MHB4IiBoZWlnaHQ9IjI3MHB4IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNzAgMjcwIiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCgk8ZyBjbGFzcz0ic3QwIj4NCgkJPHJlY3QgeT0iMC43IiBmaWxsPSIjRTlFOUU5IiB3aWR0aD0iMjY5IiBoZWlnaHQ9IjI2OS4zIi8+DQoJCTxwb2x5Z29uIGZpbGw9IiNDQkNCQ0EiIHBvaW50cz0iMjc3LjksMTg3LjEgMjQ1LDE0My40IDE4OC42LDIwMi44IDc1LDgwLjUgLTQuMSwxNjUuMyAtNC4xLDI3MiAyNzcuOSwyNzIiLz4NCgkJPGVsbGlwc2UgZmlsbD0iI0NCQ0JDQSIgY3g9IjIwMi40IiBjeT0iODQuMSIgcng9IjI0LjQiIHJ5PSIyNC4zIi8+DQoJPC9nPg0KPC9zdmc+"
    

    Value 表

    JSON( [1,2,3] )
    

    生成文本字符串 [{"Value":1},{"Value":2},{"Value":3}]

    JSONFormat.FlattenValueTables 选项也是同样的公式:

    JSON( [1,2,3], JSONFormat.FlattenValueTables )
    

    生成文本字符串 [1,2,3]

    请注意,在对 CityPopulationsCitiesByCountry 集合使用 JSON 时,FlattenValueTables 选项没有任何影响,因为这些表不是 Value 表。 Value 表只有一列,必须命名为“Value”。

  •