Json z elementu mapy

Wątek przeniesiony 2021-09-16 09:47 z Inne języki programowania przez cerrato.

AN
  • Rejestracja:prawie 4 lata
  • Ostatnio:ponad 3 lata
  • Postów:7
0

Mam sobie mape i kilka elementów. Np:

Kopiuj
mapa := map[int]string{
		1: "Marek",
		2: "Darek",
	}

Chce z jednego elementu zrobic jsona, np:

Kopiuj
{
    1 : "Marek"
}

Korzystam z Gin-Gonic. Jak zrobie

Kopiuj
gin.Context.JSON(http.StatusOK, mapa[1])

to serializuje mi samą wartość, ale bez klucza. Jak uzyskac jsona z key-value ?

KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Silesia/Marki
  • Postów:5505
1

A nie możesz zrobić mapy z tą jedną parą?


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
AN
  • Rejestracja:prawie 4 lata
  • Ostatnio:ponad 3 lata
  • Postów:7
0

OK, moge tak zrobic, nikt mi nie zabrania, ale może jest jakieś bardziej eleganckie rozwiązanie niz tworzenie nowej mapy ?

edytowany 2x, ostatnio: almostNewbee
hauleth
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:około 17 godzin
1

Poza tym, że:

Kopiuj
{
    1 : "Marek"
}

Nie jest poprawnym JSONem, to nie sądzę, by był prostszy sposób niż zrobienie tymczasowej nowej mapy.


KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Silesia/Marki
  • Postów:5505
0
hauleth napisał(a):

Poza tym, że:

Kopiuj
{
    1 : "Marek"
}

Nie jest poprawnym JSONem, to nie sądzę, by był prostszy sposób niż zrobienie tymczasowej nowej mapy.

Możesz rozwinąć? Jednak nie umiem czytać :D

Screenshot 2021-07-07 at 13-04-48 JSON Formatter Validator.png


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
edytowany 1x, ostatnio: KamilAdam
AN
No nie mialem ciapek w kluczu, tu ci je dodało.
KamilAdam
Hah, nawet jest o tym info tylko ja nie czytam info :D Inserted missing quotes.
no_solution_found
  • Rejestracja:prawie 18 lat
  • Ostatnio:24 dni
0

nie wydaje mi się, żeby to było możliwe bez tworzenia innej mapy. Jedyne co udało mi się wyskrobać to takie coś

Kopiuj
package main

import (
	"encoding/json"
	"fmt"
)

type names map[int]string

func (n *names) MarshalJSON() ([]byte, error){
  delete(*n, 2)
  return json.Marshal(map[int]string(*n))
}

func main() {
	mapa := &names{
		1: "Marek",
		2: "Darek",
	}
	data, err := json.Marshal(&mapa)
	fmt.Print(err)

	fmt.Println(string(data))
}

trochę przekombinowane, ale możesz sobie wybierać które klucze się pojawiają a które nie :)


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.