Перейти к содержимому
Топаз6.0 · До релиза
Загрузка →

Поиск в документации

Спецификация 6.0

Выберите результат стрелками и нажмите Enter, чтобы открыть его.

Введите имя API, номер диагностики, правило или тему проекта.

    Библиотека · std.json

    JSONValue.kind

    Returns the outermost kind of a JSON value.

    kind() -> string
    Модуль
    std.json →
    Получатель
    JSONValue
    Минимальное число аргументов
    0
    Максимальное число аргументов
    0

    Declaration and parameters

    Ссылка

    Доступность

    Включено по умолчанию · Не определено

    Import std.json in language mode 5.21.

    The current compiler selects std/json.tpz for this language mode. Availability in other released editions and inclusion in each installed distribution are Pending.

    Получатель

    JSONValue

    Ограничения параметров

    JSONValue.kind() -> string returns exactly one of null, bool, number, string, array, or object. The name describes the JSON value's outermost kind. Both true and false have kind bool. Integer and fractional JSON numbers have kind number.

    Test whether a JSON value is null with value.kind() == "null". This comparison is false for false, zero, the empty string, and empty arrays and objects. Reading the kind does not modify or decode the JSON value.

    A present array element or object member containing JSON null is still present. at and get return Some(value) containing that JSONValue. An absent element or member returns None(). Inspect presence first, then compare the contained value's kind.

    JSONValue does not expose an isNull member. Use the same kind comparison for null as for every other JSON kind.

    Результат

    The declared result type is string.

    Эффекты

    Ошибки

    Result and effects

    Ссылка

    The result is null, bool, number, string, array, or object. Compare it with "null" to test for JSON null. This query preserves the value and distinguishes stored null from an absent array element or object member.

    One query covers every JSON kind, and ordinary equality expresses each kind test.

    Related entries

    Ссылка

    std.json →

    Inspect JSON kinds with kind

    Ссылка
    Правилоtopaz.stdlib.contract.json-kind.rule

    Inspect JSON kinds with kind

    JSONValue.kind() -> string returns exactly one of null, bool, number, string, array, or object. The name describes the JSON value's outermost kind. Both true and false have kind bool. Integer and fractional JSON numbers have kind number.

    Test whether a JSON value is null with value.kind() == "null". This comparison is false for false, zero, the empty string, and empty arrays and objects. Reading the kind does not modify or decode the JSON value.

    A present array element or object member containing JSON null is still present. at and get return Some(value) containing that JSONValue. An absent element or member returns None(). Inspect presence first, then compare the contained value's kind.

    JSONValue does not expose an isNull member. Use the same kind comparison for null as for every other JSON kind.

    Причина

    One kind query distinguishes every JSON value kind. Comparing that result uses the ordinary equality rule for null, booleans, numbers, strings, arrays, and objects. A separate null predicate would duplicate one case and give it a second spelling. Keeping presence separate also prevents a stored null from being mistaken for a missing entry.

    Distinguish null from every other JSON kind

    Ссылка
    main.tpzDistinguish null from every other JSON kindОткрыть песочницу →
    1. import std.json
    2. import std.test
    3. import std.io
    4. for source in (["null", "false", "0", "\"\"", "[]", "\{\}"]) {
    5. let value = test.assertOk(json.parse(source))
    6. let kind = value.kind()
    7. let nullKind = kind == "null"
    8. io.writeLine("{kind}:{nullKind}")
    9. }
    Ожидаемый выводКод завершения 0
    null:true
    bool:false
    number:false
    string:false
    array:false
    object:false
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. null:true
    2. bool:false
    3. number:false
    4. string:false
    5. array:false
    6. object:false

    Keep present null values distinct from missing entries

    Ссылка
    main.tpzKeep present null values distinct from missing entriesОткрыть песочницу →
    1. import std.json
    2. import std.test
    3. import std.io
    4. let array = test.assertOk(json.parse("[null]"))
    5. let object = test.assertOk(json.parse("\{\"present\":null\}"))
    6. let arrayValue = test.assertSome(array.at(0))
    7. let objectValue = test.assertSome(object.get("present"))
    8. test.assertNone(array.at(1))
    9. test.assertNone(object.get("absent"))
    10. io.writeLine("{arrayValue.kind()}:{objectValue.kind()}")
    Ожидаемый выводКод завершения 0
    null:null
    
    $ topaz run main.tpz · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Выполнение завершается. Код завершения 0.

    Ожидаемый стандартный вывод
    1. null:null

    Reject the removed JSONValue.isNull member

    Ссылка
    main.tpzReject the removed JSONValue.isNull memberОткрыть песочницу →
    1. import std.json { JSONValue }
    2. function inspect(value: JSONValue) -> () {
    3. let result = value.isNull()
    4. return ()
    5. }
    Ожидаемый выводНенулевой код завершения
    Нет стандартного вывода.
    $ topaz check main.tpz --format json · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Этап отклонения check. Ненулевой код завершения.

    Use kind to test a JSON value for null

    Ссылка
    main.tpzUse kind to test a JSON value for nullОткрыть песочницу →
    1. import std.json { JSONValue }
    2. function inspect(value: JSONValue) -> () {
    3. let result = value.kind() == "null"
    4. return ()
    5. }
    Ожидаемый выводКод завершения 0
    Нет стандартного вывода.
    $ topaz check main.tpz --format json · Целевой продукт 5.21.3
    Ожидаемый результат

    Ожидаемый результат

    Проверка принимает программу. Код завершения 0.

    Diagnostics

    Ссылка

    Unknown member or field →

    Меню

    Загрузка →