Json z elementu mapy

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

AN
  • Rejestracja: dni
  • Ostatnio: dni
  • 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: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5549
1

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

AN
  • Rejestracja: dni
  • Ostatnio: dni
  • 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 ?

hauleth
  • Rejestracja: dni
  • Ostatnio: dni
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: dni
  • Ostatnio: dni
  • Lokalizacja: Silesia/Marki
  • Postów: 5549
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

no_solution_found
  • Rejestracja: dni
  • Ostatnio: 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.