Tworzę mały serwis internetowy w Nim i muszę odpowiadać na żądania z jsonem. Używam usługi jester module do świadczenia usługi. Oczekuję, że będę mógł użyć modułu json w bibliotece podstawowej Nima do skonstruowania jakiegoś obiektu z polami i wartościami, a następnie przekonwertować go na ciąg json. Ale jak? Czy istnieje lepszy sposób na skonstruowanie json w Nim?Jak przekonwertować obiekt do json w Nim
9
A
Odpowiedz
10
W Nim używa się json module do tworzenia obiektów JsonNode
, które są object variants. Można je skonstruować z pojedynczymi procesami, takimi jak newJObject(), a następnie zapełnić sekwencję fields
. Innym szybszym sposobem jest użycie %() proc, która akceptuje sekwencję krotek, gdzie jedną wartością jest ciąg znaków z polem json, a drugą jednostką JsonNode
.
Oto przykład pokazujący w obie strony:
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
Moduł marszałek zawiera ogólny algorytm szeregowania obiekt-json, który pracuje dla każdego typu (typ Obecnie używa run-time introspekcji).
import marshal
type
Person = object
age: int
name: string
var p = Person(age: 38, name: "Torbjørn")
echo($$p)
wyjście będzie:
{"age": 38, "name": "Torbj\u00F8rn"}
2
Inną opcją opisane przeze mnie here to zrobić następujące:
import json
var jsonResponse = %*
{"data": [{ "id": 35,
"type": "car",
"attributes": {"color":"red"} }]}
var body = ""
toUgly(body, jsonResponse)
echo body
Powiązane problemy
- 1. Jak przekonwertować obiekt hash ruby na JSON?
- 2. Obiekt JS do łańcucha JSON?
- 3. Jak przekonwertować dane ciągów na obiekt JSON w pythonie?
- 4. Jak przekonwertować tablicy do JSON w yii2
- 5. Jak przekonwertować następujący ciąg json na obiekt Java?
- 6. Jak przekonwertować JSON na ciąg?
- 7. Jak przekonwertować obiekt ResultSet na wyjściowy format JSON
- 8. Jak przekonwertować tablicę ciągów na obiekt za pomocą GSON/JSON?
- 9. Jak przekonwertować obiekt HttpRequest na obiekt HttpRequestBase?
- 10. Jak przekonwertować JSON na typ w Scala
- 11. Jak przekonwertować z Json do Protobuf?
- 12. Obiekt obiektu PHP ma nawiasy w nim
- 13. Jak przekonwertować json danych odcinkach do NSDictionary
- 14. Obiekt JSON na ciąg
- 15. Jak przekonwertować obiekt String na obiekt Hash?
- 16. Jak przekonwertować próbkę oddzwonienia na obiekt odroczony?
- 17. Jak powrócić JSON obiekt
- 18. Jak przekazać obiekt JSON do nowej aktywności
- 19. REST: jak serializować obiekt Java do JSON w "płytki" sposób?
- 20. Java: Jak przekonwertować obiekt File na obiekt String w java?
- 21. JSON manipulacja obiekt
- 22. Konwertowanie ciągu znaków JSON na obiekt JSON w Scala
- 23. Konwersja obiektu do JSON i JSON na obiekt w PHP (biblioteka taka jak Gson dla Javy)
- 24. Jak przekonwertować HttpEntity na JSON?
- 25. Jak przenieść obiekt do przodu w Three.js?
- 26. Jak przekonwertować obiekt WriteableBitmap na obiekt BitmapImage w WPF
- 27. Konwertuj ciąg na JSON Obiekt
- 28. Jak utworzyć obiekt JSON jQuery
- 29. Jak przekonwertować Java Mapa do JSON w jruby
- 30. Jak przekonwertować złożone geo-json do wkt w C#?
Choć Grzegorz odpowiedzią było to, czego szukałem, tę odpowiedź był również bardzo użyteczny, interesujący i prostszy niż przy użyciu modułu json. Chłodny! –
Wygląda na to, że w Nim każdy robi operatorów? – PascalVKooten