Я делаю небольшую веб-службу в Nim, и мне нужно ответить на запросы с помощью json. Я использую jester module, чтобы выполнить эту услугу. Я ожидаю, что я смогу использовать модуль json в базовой библиотеке Nim, чтобы построить какой-то объект с полями и значениями, а затем преобразовать его в строку json. Но как? Или есть лучший способ построить json в Nim?Как преобразовать объект в json в Nim
9
A
ответ
10
В Nim вы используете json module для создания JsonNode
объектов, которые являются object variants. Они могут быть построены с отдельными процедурами, такими как newJObject(), а затем заполнять последовательность fields
. Еще одним быстрым способом является использование %() proc, который принимает последовательность кортежей, где одно значение - это строка с полем json, а другая - JsonNode
.
Вот пример, показывающий оба способа:
import json
type
Person = object ## Our generic person record.
age: int ## The age of the person.
name: string ## The name of the person.
proc `%`(p: Person): JsonNode =
## Quick wrapper around the generic JObject constructor.
result = %[("age", %p.age), ("name", %p.name)]
proc myCustomJson(p: Person): JsonNode =
## Custom method where we replicate manual construction.
result = newJObject()
# Initialize empty sequence with expected field tuples.
var s: seq[tuple[key: string, val: JsonNode]] = @[]
# Add the integer field tuple to the sequence of values.
s.add(("age", newJInt(p.age)))
# Add the string field tuple to the sequence of values.
s.add(("name", newJString(p.name)))
result.fields = s
proc test() =
# Tests making some jsons.
var p: Person
p.age = 24
p.name = "Minah"
echo(%p) # { "age": 24, "name": "Minah"}
p.age = 33
p.name = "Sojin"
echo(%p) # { "age": 33, "name": "Sojin"}
p.age = 40
p.name = "Britney"
echo p.myCustomJson # { "age": 40, "name": "Britney"}
when isMainModule: test()
21
Модуль маршал включает в себя общий алгоритм сериализации объекта до JSON, который работает для любого типа (в настоящее время, он использует время выполнения типа самоанализ).
import marshal
type
Person = object
age: int
name: string
var p = Person(age: 38, name: "Torbjørn")
echo($$p)
Выход будет:
{"age": 38, "name": "Torbj\u00F8rn"}
2
Другой вариант изложено мной here это сделать следующее:
import json
var jsonResponse = %*
{"data": [{ "id": 35,
"type": "car",
"attributes": {"color":"red"} }]}
var body = ""
toUgly(body, jsonResponse)
echo body
Смежные вопросы
- 1. как преобразовать в объект JSON
- 2. Как преобразовать JSON в объект?
- 3. как преобразовать объект JSON в объект класса
- 4. Как преобразовать объект JSON в объект Angular?
- 5. Как преобразовать объект JSON в объект JavaScript
- 6. Как преобразовать массив JSON в объект JSON
- 7. Как преобразовать текст JSON в объект JSON?
- 8. как преобразовать json-объект в json-массив
- 9. Как преобразовать один объект json в объект массива json?
- 10. Преобразовать строку в JSON объект
- 11. преобразовать объект json в массив
- 12. Преобразовать строку в объект JSON
- 13. Преобразовать Json объект в список
- 14. Невозможно преобразовать json в объект
- 15. Преобразовать объект Entity в JSON
- 16. JSON - преобразовать объект в массив JSON
- 17. Преобразовать Объект класса StdClass в JSON объект
- 18. Невозможно преобразовать значение Json в объект Json
- 19. Как преобразовать объект JSON в Java jsonReader
- 20. Как преобразовать объект JSON в карту объекта?
- 21. Как преобразовать объект json в QObject?
- 22. Как преобразовать объект JSON в массив массивов
- 23. Как преобразовать json-объект в java
- 24. Как преобразовать многомерный массив в объект json
- 25. Как преобразовать JSON строку в объект Java
- 26. Как преобразовать объект в представление JSON
- 27. Как преобразовать dict в объект JSON?
- 28. как преобразовать ResultSet в объект JSON
- 29. Как преобразовать строку в JSON объект
- 30. Как преобразовать объект JSON в Symfony2
Хотя Гжегож ответ был только то, что я искал, этот ответ был также очень полезен, интересен и проще, чем использование json-модуля. Круто! –
Кажется, что в Ниме все делают операторов? – PascalVKooten