Golang中使用go-simplejson包解析json数组字符串代码示例_字符串

package main

import (
	"encoding/json"
	"fmt"
	"log"

	"/bitly/go-simplejson"
)

func main() {
	// 示例 JSON 数据,包含多个 JSON 字符串
	jsonData := `[
		"{\"name\": \"John\", \"age\": 30}",
		"{\"name\": \"Jane\", \"age\": 25}",
		"{\"name\": \"Doe\", \"age\": 40}"
	]`

	// 解析外层 JSON 数组
	js, err := simplejson.NewJson([]byte(jsonData))
	if err != nil {
		log.Fatal(err)
	}

	// 获取数组中的元素
	items, err := js.Array()
	if err != nil {
		log.Fatal(err)
	}

	// 遍历数组中的每个 JSON 字符串
	for i, item := range items {
		// 每个元素是一个字符串类型,先类型断言为 string
		jsonStr, ok := item.(string)
		if !ok {
			log.Fatalf("元素 %d 不是 JSON 字符串\n", i)
		}

		// 将每个 JSON 字符串解析为一个 map
		var person map[string]interface{}
		if err := json.Unmarshal([]byte(jsonStr), &person); err != nil {
			log.Fatalf("解析 JSON 字符串失败: %v\n", err)
		}

		// 输出解析后的内容
		fmt.Printf("Person %d: Name=%s, Age=%v\n", i+1, person["name"], person["age"])
	}

	// 修改数组中的一个 JSON 字符串
	// 通过 GetIndex 获取数组中的元素,修改它
	js.GetIndex(1).Set("", "{\"name\": \"Alice\", \"age\": 28}") // 修改第二个元素

	// 输出修改后的 JSON 数据
	updatedJSON, err := js.MarshalJSON()
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println("Updated JSON:", string(updatedJSON))
}