
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))
}
















