Maison  >  Article  >  développement back-end  >  Comment désérialiser json avec un tableau anonyme dans Golang ?

Comment désérialiser json avec un tableau anonyme dans Golang ?

WBOY
WBOYavant
2024-02-14 11:24:21887parcourir

如何在 Golang 中用匿名数组反序列化 json?

Dans Golang, comment utiliser un tableau anonyme pour désérialiser les données json ? C’est un problème que de nombreux développeurs rencontrent souvent. Les tableaux anonymes peuvent facilement gérer certaines structures de données simples sans définir de structures spécifiques. En utilisant le package json intégré de Golang, nous pouvons facilement implémenter cette fonctionnalité. Ci-dessous, l'éditeur PHP Xinyi vous présentera en détail comment utiliser des tableaux anonymes pour désérialiser les données json dans Golang. Nous allons jeter un coup d'oeil!

Contenu de la question

Je reçois ce json d'un serveur externe :

[["010117", "070117", "080117"], ["080117", "140117", "150117"], ["150117", "210117", "220117"]]

Je dois l'analyser

package main

import (
    "encoding/json"
    "fmt"
    "io"
    "os"
    "runtime"
)

type Range struct {
    From string
    To   string
    Do   string
}

type AllRanges struct {
    Ranges []Range
}

func main() {
    var ranges AllRanges
    j, err := os.ReadFile(file)

    if err != nil {
        panic("Can't read json file")
    }

    if json.Unmarshal(j, &v) != nil {
        panic("Error reading the json")
    }
}

Lorsque j'exécute, une panique se déclenche indiquant qu'une erreur s'est produite lors de la lecture de json

Merci d'avance !

Solution

  1. Ce n'est pas un code défaillant. Le code que vous avez publié ne sera pas compilé car il tente de se transformer en une variable non déclarée v.

  2. En supposant que v应该是ranges devrait être

    , le problème est très simple....

ranges 的类型为 allranges,它是一个具有命名成员的结构体,ranges

est un ensemble de structures qui comptent également des membres nommés.

Ainsi, en essayant de désorganiser json dans cette structure, le démarshaler s'attendra à trouver :

{
   "ranges": [
        { 
           "from": "..",
           "to": ..,
           "do": ".."
        },
        { etc }
   ]
}
rangesPour extraire les données d'un tableau anonyme de tableaux de chaînes, vous devez déclarer

en tant que tableau de tableaux de chaînes :

    var ranges [][]string

    ...

    if json.Unmarshal(j, &ranges) != nil {
        panic("Error reading the json")
    }

Une fois désorganisé dans ce tableau de tableaux, vous devez écrire du code pour le convertir en la valeur structurée souhaitée.

Ce playground[][]string montre comment réussir à désassembler des exemples de données dans

. La transformation est laissée comme un exercice. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer