Загрузка...

Is there a magic lib for working with Json?

Thread in Go created by lvnlvn Nov 22, 2025. 309 views

  1. lvnlvn
    lvnlvn Topic starter Nov 22, 2025
    Telegram: View @lvnlvntgk
    5,238 May 9, 2019
    Хотелось бы читать json (из ответа, с файла), как в python реализовано через Dict или примерно так, в общем удобно
    Python
     response_json['data']['speed_at_min']
    сейчас делаю так:
    Code

    var responseJson map[string]interface{}
    err = response.JSON(&responseJson)
    if err != nil {
    return nil, fmt.Errorf("failed to parse JSON: %v", err)
    }

    data, ok := responseJson["data"].(map[string]interface{})
    if !ok {
    return nil, fmt.Errorf("invalid JSON structure, missing 'data'")
    }

    speedAtMinFloat, ok := data["speed_at_min"].(float64) // JSON числа приходят как float64
    if !ok {
    return nil, fmt.Errorf("invalid JSON structure, 'speed_at_min' not a number")
    }

    speedAtMin := int(speedAtMinFloat)
    .JSON - функция в классе ответа библиотеки которую я использую для запросов, хотелось бы просто отдать text ответа и получить класс с верной структурой и всеми данными, но не делая для каждого такого ответа model тк запросов куча, где то может быть в ответе переменная, потом пропасть, чтобы код как-то сам это генерировал из текста ответа
     
  2. pablosangeles
    pablosangeles Nov 23, 2025 Banned 112 Jan 19, 2025
    gjson посмотри
    Code
    jsonStr := response.Text()  // так получаешь текст ответа

    func parseResponse(responseText string) (int64, error) {
    result := gjson.Get(responseText, "data.speed_at_min")

    if !result.Exists() {
    return 0, fmt.Errorf("field 'data.speed_at_min' not found")
    }

    return result.Int(), nil
    }
    Можешь не одно поле как тут доставать а сделать структуру и в нее парсить все поля, потом работать с ней удобно.
     
  3. yoona
    А в чем проблема все в структуру засунуть и удобно уже из нее читать? Без всяких костыльных мап
     
    1. lvnlvn Topic starter
      avataryoona, а в чем проблема прочесть вопрос ээээ оооо :colobok_crazy:
    2. yoona
      avatarlvnlvn, в том, что с вероятностью 99% тебе такой функционал и не нужен. В иных же случаях -- го не для тебя, используй языки с динамической типизацией
    3. lvnlvn Topic starter
      avataryoona, не отвечай на вопрос который не задан по твоему ответу, пж, новокекус
Loading...