У меня есть строка, представляющая данные транзакции из сети биткойнов. Мне хотелось бы расшифровать строку (с именем my_data) таким образом, чтобы я мог получить только значение поля «хэш». Я попробовал небольшой пример (в реальной ситуации я бы массив, каждая позиция содержит передачи данных, как тот, который вы можете увидеть в коде):Использование JSON для декодирования небольшого количества данных из огромной строки
package main
import (
"encoding/json"
"fmt"
)
func main() {
var my_data = []byte(`{
"ver":1,
"inputs":[
{
"sequence":4294967295,
"prev_out":{
"spent":true,
"tx_index":156978299,
"type":0,
"addr":"34cXotJvHAz1RVFtmK2vU29E9d5hF2manG",
"value":848231245,
"n":1,
"script":"a914200f3e946fcf58d3f0787034a610860f0b96332d87"
},
"script":"004730440220149e4cd90c7b2648e89d357162f383098504eea21d390f02e5a289e114ed36520220556da97f0e6789d34f4fb1faf7a1c1055368c01ede85b8101be5007f7b9f3c190147304402200d72e1b91684cdb0e63ea2a24d6ae0b9e38dacdf068e2e08e46ce7f951cdc9dd0220242be0131722287bc15e3d802ba3dea9df0c18f3ec0ac6913b4146f7deb717c90147522102dfd3c8864cddd4d88a8f602d016a656132f89f66450966f9a4a45dea11ec6eb92102c5f064226fcd75fdcae289118b0c4d20e1bafbf4068e7102baec66fade94e3b952ae"
}
],
"block_height":417695,
"relayed_by":"138.201.2.34",
"out":[
{
"spent":false,
"tx_index":156978302,
"type":0,
"addr":"1PWDLsx73qfyCUga29ffAjc2UVdWEeeHDL",
"value":3123438,
"n":0,
"script":"76a914f6d92221d499bf8c01a0dc6f0c04b82d6b62301f88ac"
},
{
"spent":true,
"tx_index":156978302,
"type":0,
"addr":"34cXotJvHAz1RVFtmK2vU29E9d5hF2manG",
"value":845057807,
"n":1,
"script":"a914200f3e946fcf58d3f0787034a610860f0b96332d87"
}
],
"lock_time":0,
"size":334,
"double_spend":false,
"time":1466725723,
"tx_index":156978302,
"vin_sz":1,
"hash":"fae2577ff2a1cfa977c7a883ea4e594c91bd67c767ef1b7870475022c08a453b",
"vout_sz":2
}`)
type Tx struct {
hash string
}
var txs []Tx
err := json.Unmarshal(my_data, &txs)
if err != nil {
fmt.Println("error:", err)
}
for i:=0; i<len(txs); i++{
fmt.Printf("%s\n\n", txs[i].hash)
}
}
, но я постоянно получаю следующее сообщение об ошибке:
error: json: cannot unmarshal object into Go value of type []main.Tx
Есть ли более простой способ, которым я мог бы попробовать, что не нуждается в библиотеке «encoding/json»?
Заранее благодарен!
РЕДАКТИРОВАТЬ:
Кода я был адаптирован из примера я извлеченный из here.
Я считаю, что проблема заключается в строке, которую я пытаюсь декодировать, поскольку шаблон, на котором он построен, позволяет вложенные списки и значения полей с кавычками или без них. Хотя я не уверен.
Рекомендуется использовать код в своем сообщении вместе со ссылками на сторонний сайт (хотя это может быть более наглядным с его интерактивными движками). Частично потому, что ссылка может сломаться. – YakovL