foo1 아래에 메서드 키 값을 인쇄하고 Category->foo1의 설명을 인쇄해야 합니다. packagemainimport("인코딩/json""fmt"/> foo1 아래에 메서드 키 값을 인쇄하고 Category->foo1의 설명을 인쇄해야 합니다. packagemainimport("인코딩/json""fmt">

 >  기사  >  백엔드 개발  >  Go Lang에서 중첩된 구조화되지 않은 JSON 처리

Go Lang에서 중첩된 구조화되지 않은 JSON 처리

WBOY
WBOY앞으로
2024-02-11 22:36:091023검색

在 Go Lang 中处理嵌套非结构化 JSON

Go Lang에서 중첩된 구조화되지 않은 JSON을 처리하는 것은 중요한 작업입니다. JSON(JavaScript Object Notation)은 일반적으로 사용되는 데이터 교환 형식이지만 JSON 데이터가 복잡하게 중첩되면 처리가 어려워질 수 있습니다. PHP 편집자 Yuzai는 Go Lang에서 중첩된 구조화되지 않은 JSON을 처리하는 몇 가지 방법과 기술을 소개하여 이 데이터를 보다 효율적으로 구문 분석하고 운영하는 데 도움을 줍니다. 이러한 기술을 익히면 복잡한 JSON 데이터를 쉽게 처리하고 코드의 가독성과 유지 관리성을 향상시킬 수 있습니다.

질문 내용

golang의 구조화되지 않은 json 데이터에서 특정 데이터에 액세스하는 방법을 이해하려고 합니다. 다음 json이 있고 foo1에 비어 있는 foo2와 다른 데이터가 있을 때 자료 아래의 "foo1"에 액세스하려고 합니다. foo1과 같은 객체에 데이터가 있으면 동일한 이름의 분류 섹션에서도 데이터를 읽어야 합니다. 예를 들어. Material 섹션 아래의 foo1에는 데이터가 있으므로 Material->foo1 아래에 메서드 키 값을 인쇄하고 Category->foo1의 설명을 인쇄해야 합니다.

으아악

foo1이 비어 있지 않으면 예상 출력:

package main

import (
    "encoding/json"
    "fmt"
)


type new struct {
    desc string `json:"desc"`
}

func main() {
    bjson := `{ 
                "classifications": { "foo1": { "desc": "it may be possible.", "sol": "the backups.", "ref": { "sensitive information": "https://www.sensitive_information.html", "control sphere": "https://ww.example.org/data.html" },"bar1": { "desc": "the target", "sol": "should be used.", "ref": { "abc: srgery": "https://www.orp.org/" } }}, 
               
                "material": { "backup file": [],"foo1": [ { "method": "get", "info": "it is not set", "level": 1, "parameter": "", "referer": "", "module": "diq", "curl_command": "curl \"https://example.com/\"", "wsg": [ "conf-12", "o-policy" ] }],"foo2": [],"bar1": []},
         
                "anomalies": { "server error": [], "resource consumption": [] }, 
                
                "additionals": { "web technology": [], "methods": [] }, 

                "infos": { "url": "https://example.com/", "date": "thu, 08 dec 2022 06:52:04 +0000"}}}`


    
        var parseddata = make(map[string]map[string]new)
    json.unmarshal([]byte(bjson), &parseddata)
    fmt.println("output of parseddata - \n", parseddata["classifications"]["foo1"].desc)
    
    //for _, v := range parseddata["material"] {
    //  fmt.println(v)
    //}
}

해결 방법

이를 map[string]interface{} 변수로 역마샬링한 다음 일련의 유형 어설션을 사용하여 다음과 같이 원하는 정보를 얻을 수 있습니다.

으아악

위 내용은 다음과 같이 출력됩니다.

으아악

전체 작동 버전의 코드는 다음과 같습니다.

으아악

만약 이것을 만들면:

으아악

작동 방법은 다음과 같습니다.

으아악

값이 존재하지 않거나 빈 목록인지 확인하세요.

으아악

위 내용은 Go Lang에서 중첩된 구조화되지 않은 JSON 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제