Giter Club home page Giter Club logo

jsonq's Introduction

jsonq

Build Status Godoc license

Simplify your golang json usage by extracting fields or items from arrays and objects with a simple, hierarchical query. API Documentation on godoc.org.

This package is meant to make working with complex feeds a bit more easy. If you have simple feeds you want to model with struct types, check out jflect, which will create struct definitions given a json document.

installing

go get github.com/jmoiron/jsonq

usage

Given some json data like:

{
	"foo": 1,
	"bar": 2,
	"test": "Hello, world!",
	"baz": 123.1,
	"array": [
		{"foo": 1},
		{"bar": 2},
		{"baz": 3}
	],
	"subobj": {
		"foo": 1,
		"subarray": [1,2,3],
		"subsubobj": {
			"bar": 2,
			"baz": 3,
			"array": ["hello", "world"]
		}
	},
	"bool": true
}

Decode it into a map[string]interface{}:

import (
	"strings"
	"encoding/json"
	"github.com/jmoiron/jsonq"
)

data := map[string]interface{}{}
dec := json.NewDecoder(strings.NewReader(jsonstring))
dec.Decode(&data)
jq := jsonq.NewQuery(data)

From here, you can query along different keys and indexes:

// data["foo"] -> 1
jq.Int("foo")

// data["subobj"]["subarray"][1] -> 2
jq.Int("subobj", "subarray", "1")

// data["subobj"]["subarray"]["array"][0] -> "hello"
jq.String("subobj", "subsubobj", "array", "0")

// data["subobj"] -> map[string]interface{}{"subobj": ...}
obj, err := jq.Object("subobj")

Missing keys, out of bounds indexes, and type failures will return errors. For simplicity, integer keys (ie, {"0": "zero"}) are inaccessible by jsonq as integer strings are assumed to be array indexes.

The Int and Float methods will attempt to parse numbers from string values to ease the use of many real world feeds which deliver numbers as strings.

Suggestions/comments please tweet @jmoiron

jsonq's People

Contributors

hugo avatar jmoiron avatar joelittlejohn avatar whostolebenfrog avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jsonq's Issues

Length() function

It would be cool to have a shorthand way of getting the length of a JSON array. For example with this JSON:

{
  "data" : [1, 2, 3]
}

... I currently need to do this to check the length:

arr, _ := jq.Array("data")
fmt.Println( len(arr) )

It would be nice to be able to do this:

fmt.Println( jq.Length("data") )

A small thing, but very handy.

Confusion About Integer String Keys

I've read the following multiple times and I still don't get it.

"""
For simplicity, integer keys (ie, {"0": "zero"}) are inaccessible by jsonq as integer strings are assumed to be array indexes.
"""

How can I access the string "Foo" in the following JSON response with jsonq?

{
  "534" : {
    "aliases" : {
      "Foo" : { }
    }
  }
}

Parsing of Arrays

Hi,

Please add example about how to Parse Arrays with JSONQ. Example response to parse is

[
{
"tmdb_id": "261825",
"imdb_id": "tt3576084",
"name": "Zero Motivation",
"new_images": "1",
"total_images": "3"
},
{
"tmdb_id": "304357",
"imdb_id": "tt2404425",
"name": "Woman in Gold",
"new_images": "4",
"total_images": "4"
},
{
"tmdb_id": "856",
"imdb_id": "tt0096438",
"name": "Who Framed Roger Rabbit",
"new_images": "1",
"total_images": "20"
},
{
"tmdb_id": "252512",
"imdb_id": "tt1791682",
"name": "While We're Young",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "52783",
"imdb_id": "",
"name": "Wall Street Collection",
"new_images": "1",
"total_images": "2"
},
{
"tmdb_id": "58244",
"imdb_id": "tt1374992",
"name": "Upside Down",
"new_images": "1",
"total_images": "28"
},
{
"tmdb_id": "1997",
"imdb_id": "tt0338512",
"name": "Two Brothers",
"new_images": "1",
"total_images": "6"
},
{
"tmdb_id": "271718",
"imdb_id": "tt3152624",
"name": "Trainwreck",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "290764",
"imdb_id": "tt2401097",
"name": "Tracers",
"new_images": "5",
"total_images": "7"
},
{
"tmdb_id": "11194",
"imdb_id": "tt0379557",
"name": "Touching the Void",
"new_images": "3",
"total_images": "3"
},
{
"tmdb_id": "158852",
"imdb_id": "tt1964418",
"name": "Tomorrowland",
"new_images": "12",
"total_images": "30"
},
{
"tmdb_id": "597",
"imdb_id": "tt0120338",
"name": "Titanic",
"new_images": "1",
"total_images": "32"
},
{
"tmdb_id": "285783",
"imdb_id": "tt3488710",
"name": "The Walk",
"new_images": "2",
"total_images": "2"
},
{
"tmdb_id": "269026",
"imdb_id": "tt2219214",
"name": "The Toy Soldiers",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "208284",
"imdb_id": "tt2733258",
"name": "The Strange Colour of Your Body's Tears",
"new_images": "1",
"total_images": "2"
},
{
"tmdb_id": "9779",
"imdb_id": "tt0403508",
"name": "The Sisterhood of the Traveling Pants",
"new_images": "2",
"total_images": "2"
},
{
"tmdb_id": "11843",
"imdb_id": "tt0072081",
"name": "The Return of the Pink Panther",
"new_images": "1",
"total_images": "8"
},
{
"tmdb_id": "22752",
"imdb_id": "tt0034091",
"name": "The Reluctant Dragon",
"new_images": "1",
"total_images": "5"
},
{
"tmdb_id": "284289",
"imdb_id": "tt2911668",
"name": "The Reach",
"new_images": "7",
"total_images": "8"
},
{
"tmdb_id": "11130",
"imdb_id": "tt0368933",
"name": "The Princess Diaries 2: Royal Engagement",
"new_images": "1",
"total_images": "5"
},
{
"tmdb_id": "936",
"imdb_id": "tt0057413",
"name": "The Pink Panther",
"new_images": "1",
"total_images": "8"
},
{
"tmdb_id": "12096",
"imdb_id": "tt0383216",
"name": "The Pink Panther",
"new_images": "1",
"total_images": "17"
},
{
"tmdb_id": "15159",
"imdb_id": "tt0838232",
"name": "The Pink Panther 2",
"new_images": "1",
"total_images": "16"
},
{
"tmdb_id": "193610",
"imdb_id": "tt2203939",
"name": "The Other Woman",
"new_images": "1",
"total_images": "26"
},
{
"tmdb_id": "34584",
"imdb_id": "tt0088323",
"name": "The NeverEnding Story",
"new_images": "1",
"total_images": "9"
},
{
"tmdb_id": "121",
"imdb_id": "tt0167261",
"name": "The Lord of the Rings: The Two Towers",
"new_images": "2",
"total_images": "63"
},
{
"tmdb_id": "122",
"imdb_id": "tt0167260",
"name": "The Lord of the Rings: The Return of the King",
"new_images": "6",
"total_images": "67"
},
{
"tmdb_id": "120",
"imdb_id": "tt0120737",
"name": "The Lord of the Rings: The Fellowship of the Ring",
"new_images": "6",
"total_images": "73"
},
{
"tmdb_id": "10150",
"imdb_id": "tt0084237",
"name": "The Last Unicorn",
"new_images": "1",
"total_images": "5"
},
{
"tmdb_id": "616",
"imdb_id": "tt0325710",
"name": "The Last Samurai",
"new_images": "2",
"total_images": "27"
},
{
"tmdb_id": "335521",
"imdb_id": "",
"name": "The King of Devil's Island",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "205587",
"imdb_id": "tt1872194",
"name": "The Judge",
"new_images": "1",
"total_images": "33"
},
{
"tmdb_id": "228967",
"imdb_id": "tt2788710",
"name": "The Interview",
"new_images": "1",
"total_images": "20"
},
{
"tmdb_id": "131631",
"imdb_id": "tt1951265",
"name": "The Hunger Games: Mockingjay - Part 1",
"new_images": "1",
"total_images": "77"
},
{
"tmdb_id": "2428",
"imdb_id": "tt0059245",
"name": "The Greatest Story Ever Told",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "255157",
"imdb_id": "tt2376218",
"name": "The Forger",
"new_images": "1",
"total_images": "4"
},
{
"tmdb_id": "81870",
"imdb_id": "tt1686784",
"name": "The Flying Swords of Dragon Gate",
"new_images": "4",
"total_images": "10"
},
{
"tmdb_id": "166424",
"imdb_id": "tt1502712",
"name": "The Fantastic Four",
"new_images": "2",
"total_images": "11"
},
{
"tmdb_id": "409",
"imdb_id": "tt0116209",
"name": "The English Patient",
"new_images": "1",
"total_images": "12"
},
{
"tmdb_id": "11532",
"imdb_id": "tt0089087",
"name": "The Emerald Forest",
"new_images": "2",
"total_images": "2"
},
{
"tmdb_id": "9954",
"imdb_id": "tt0475944",
"name": "The Covenant",
"new_images": "1",
"total_images": "12"
},
{
"tmdb_id": "2667",
"imdb_id": "tt0185937",
"name": "The Blair Witch Project",
"new_images": "1",
"total_images": "8"
},
{
"tmdb_id": "239220",
"imdb_id": "tt2273575",
"name": "The Advocate",
"new_images": "3",
"total_images": "3"
},
{
"tmdb_id": "295699",
"imdb_id": "tt2937696",
"name": "That's What I'm Talking About",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "23629",
"imdb_id": "tt0978764",
"name": "Sucker Punch",
"new_images": "8",
"total_images": "122"
},
{
"tmdb_id": "1892",
"imdb_id": "tt0086190",
"name": "Star Wars: Episode VI - Return of the Jedi",
"new_images": "1",
"total_images": "81"
},
{
"tmdb_id": "1891",
"imdb_id": "tt0080684",
"name": "Star Wars: Episode V - The Empire Strikes Back",
"new_images": "1",
"total_images": "90"
},
{
"tmdb_id": "11",
"imdb_id": "tt0076759",
"name": "Star Wars: Episode IV - A New Hope",
"new_images": "1",
"total_images": "97"
},
{
"tmdb_id": "1895",
"imdb_id": "tt0121766",
"name": "Star Wars: Episode III - Revenge of the Sith",
"new_images": "1",
"total_images": "82"
},
{
"tmdb_id": "1894",
"imdb_id": "tt0121765",
"name": "Star Wars: Episode II - Attack of the Clones",
"new_images": "1",
"total_images": "118"
},
{
"tmdb_id": "1893",
"imdb_id": "tt0120915",
"name": "Star Wars: Episode I - The Phantom Menace",
"new_images": "1",
"total_images": "102"
},
{
"tmdb_id": "10",
"imdb_id": "",
"name": "Star Wars Collection",
"new_images": "1",
"total_images": "35"
},
{
"tmdb_id": "238713",
"imdb_id": "tt3079380",
"name": "Spy",
"new_images": "1",
"total_images": "16"
},
{
"tmdb_id": "13850",
"imdb_id": "tt0038969",
"name": "Song of the South",
"new_images": "4",
"total_images": "5"
},
{
"tmdb_id": "223485",
"imdb_id": "tt3205376",
"name": "Slow West",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "67195",
"imdb_id": "",
"name": "Slipknot: Sicnesses",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "21416",
"imdb_id": "tt0350815",
"name": "Slipknot: Disasterpieces",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "810",
"imdb_id": "tt0413267",
"name": "Shrek the Third",
"new_images": "4",
"total_images": "29"
},
{
"tmdb_id": "10192",
"imdb_id": "tt0892791",
"name": "Shrek Forever After",
"new_images": "6",
"total_images": "44"
},
{
"tmdb_id": "808",
"imdb_id": "tt0126029",
"name": "Shrek",
"new_images": "5",
"total_images": "29"
},
{
"tmdb_id": "809",
"imdb_id": "tt0298148",
"name": "Shrek 2",
"new_images": "4",
"total_images": "22"
},
{
"tmdb_id": "37786",
"imdb_id": "tt1261945",
"name": "Sex and the City 2",
"new_images": "1",
"total_images": "11"
},
{
"tmdb_id": "254128",
"imdb_id": "tt2126355",
"name": "San Andreas",
"new_images": "4",
"total_images": "22"
},
{
"tmdb_id": "29993",
"imdb_id": "tt0041838",
"name": "Samson and Delilah",
"new_images": "2",
"total_images": "2"
},
{
"tmdb_id": "14906",
"imdb_id": "tt0036326",
"name": "Saludos Amigos",
"new_images": "1",
"total_images": "3"
},
{
"tmdb_id": "11329",
"imdb_id": "tt0313542",
"name": "Runaway Jury",
"new_images": "1",
"total_images": "7"
},
{
"tmdb_id": "2800",
"imdb_id": "tt0398375",
"name": "Rumor has it...",
"new_images": "3",
"total_images": "20"
},
{
"tmdb_id": "36797",
"imdb_id": "tt0120029",
"name": "RocketMan",
"new_images": "1",
"total_images": "2"
},
{
"tmdb_id": "61791",
"imdb_id": "tt1318514",
"name": "Rise of the Planet of the Apes",
"new_images": "1",
"total_images": "50"
},
{
"tmdb_id": "500",
"imdb_id": "tt0105236",
"name": "Reservoir Dogs",
"new_images": "1",
"total_images": "27"
},
{
"tmdb_id": "15199",
"imdb_id": "tt1273675",
"name": "Rent: Filmed Live on Broadway",
"new_images": "1",
"total_images": "2"
},
{
"tmdb_id": "11330",
"imdb_id": "tt0425379",
"name": "Pusher 3",
"new_images": "1",
"total_images": "2"
},
{
"tmdb_id": "41124",
"imdb_id": "tt1626645",
"name": "Porcupine Tree: Anesthetize",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "243688",
"imdb_id": "tt1029360",
"name": "Poltergeist",
"new_images": "3",
"total_images": "8"
},
{
"tmdb_id": "15393",
"imdb_id": "tt0067588",
"name": "Play Misty for Me",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "11020",
"imdb_id": "tt0073540",
"name": "Picnic at Hanging Rock",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "10312",
"imdb_id": "tt0129290",
"name": "Patch Adams",
"new_images": "5",
"total_images": "9"
},
{
"tmdb_id": "116149",
"imdb_id": "tt1109624",
"name": "Paddington",
"new_images": "6",
"total_images": "31"
},
{
"tmdb_id": "43209",
"imdb_id": "tt1653690",
"name": "Ong Bak 3",
"new_images": "1",
"total_images": "5"
},
{
"tmdb_id": "90369",
"imdb_id": "tt1937264",
"name": "Now Is Good",
"new_images": "2",
"total_images": "25"
},
{
"tmdb_id": "210860",
"imdb_id": "tt3045616",
"name": "Mortdecai",
"new_images": "2",
"total_images": "22"
},
{
"tmdb_id": "15660",
"imdb_id": "tt0082766",
"name": "Mommie Dearest",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "1700",
"imdb_id": "tt0100157",
"name": "Misery",
"new_images": "1",
"total_images": "9"
},
{
"tmdb_id": "42826",
"imdb_id": "",
"name": "Meshuggah: Alive",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "298861",
"imdb_id": "",
"name": "Meshuggah - The Ophidian Trek",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "7270",
"imdb_id": "tt0325805",
"name": "Matchstick Men",
"new_images": "2",
"total_images": "5"
},
{
"tmdb_id": "272077",
"imdb_id": "",
"name": "Mastodon - Live at Brixton",
"new_images": "2",
"total_images": "2"
},
{
"tmdb_id": "20343",
"imdb_id": "tt0038718",
"name": "Make Mine Music!",
"new_images": "2",
"total_images": "4"
},
{
"tmdb_id": "76341",
"imdb_id": "tt1392190",
"name": "Mad Max: Fury Road",
"new_images": "1",
"total_images": "44"
},
{
"tmdb_id": "637",
"imdb_id": "tt0118799",
"name": "Life Is Beautiful",
"new_images": "1",
"total_images": "12"
},
{
"tmdb_id": "947",
"imdb_id": "tt0056172",
"name": "Lawrence of Arabia",
"new_images": "1",
"total_images": "14"
},
{
"tmdb_id": "3163",
"imdb_id": "tt0068559",
"name": "La maldición de Frankenstein",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "244563",
"imdb_id": "tt3263614",
"name": "Kumiko, the Treasure Hunter",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "207703",
"imdb_id": "tt2802144",
"name": "Kingsman: The Secret Service",
"new_images": "1",
"total_images": "36"
},
{
"tmdb_id": "11543",
"imdb_id": "tt0116778",
"name": "Kingpin",
"new_images": "2",
"total_images": "12"
},
{
"tmdb_id": "254",
"imdb_id": "tt0360717",
"name": "King Kong",
"new_images": "3",
"total_images": "27"
},
{
"tmdb_id": "37821",
"imdb_id": "tt1103153",
"name": "Killers",
"new_images": "2",
"total_images": "43"
},
{
"tmdb_id": "16859",
"imdb_id": "tt0097814",
"name": "Kiki's Delivery Service",
"new_images": "1",
"total_images": "35"
},
{
"tmdb_id": "29710",
"imdb_id": "tt0060588",
"name": "Khartoum",
"new_images": "1",
"total_images": "3"
},
{
"tmdb_id": "135397",
"imdb_id": "tt0369610",
"name": "Jurassic World",
"new_images": "2",
"total_images": "42"
},
{
"tmdb_id": "20533",
"imdb_id": "tt1075747",
"name": "Jonah Hex",
"new_images": "3",
"total_images": "18"
},
{
"tmdb_id": "49529",
"imdb_id": "tt0401729",
"name": "John Carter",
"new_images": "3",
"total_images": "64"
},
{
"tmdb_id": "67037",
"imdb_id": "tt1412459",
"name": "Jeff Beck: Performing This Week... Live at Ronnie Scotts",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "305662",
"imdb_id": "",
"name": "Jeff Beck - Live in Tokyo",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "578",
"imdb_id": "tt0073195",
"name": "Jaws",
"new_images": "1",
"total_images": "23"
},
{
"tmdb_id": "81005",
"imdb_id": "tt1351685",
"name": "Jack the Giant Slayer",
"new_images": "8",
"total_images": "49"
},
{
"tmdb_id": "75780",
"imdb_id": "tt0790724",
"name": "Jack Reacher",
"new_images": "1",
"total_images": "25"
},
{
"tmdb_id": "1726",
"imdb_id": "tt0371746",
"name": "Iron Man",
"new_images": "2",
"total_images": "73"
},
{
"tmdb_id": "10138",
"imdb_id": "tt1228705",
"name": "Iron Man 2",
"new_images": "3",
"total_images": "92"
},
{
"tmdb_id": "628",
"imdb_id": "tt0110148",
"name": "Interview with the Vampire",
"new_images": "1",
"total_images": "18"
},
{
"tmdb_id": "157336",
"imdb_id": "tt0816692",
"name": "Interstellar",
"new_images": "2",
"total_images": "68"
},
{
"tmdb_id": "256474",
"imdb_id": "tt2101570",
"name": "In the Blood",
"new_images": "1",
"total_images": "8"
},
{
"tmdb_id": "46529",
"imdb_id": "tt1464540",
"name": "I Am Number Four",
"new_images": "7",
"total_images": "50"
},
{
"tmdb_id": "10066",
"imdb_id": "tt0397065",
"name": "House of Wax",
"new_images": "1",
"total_images": "7"
},
{
"tmdb_id": "9550",
"imdb_id": "tt0385004",
"name": "House of Flying Daggers",
"new_images": "1",
"total_images": "21"
},
{
"tmdb_id": "159824",
"imdb_id": "tt2510894",
"name": "Hotel Transylvania 2",
"new_images": "2",
"total_images": "4"
},
{
"tmdb_id": "12222",
"imdb_id": "tt0451079",
"name": "Horton Hears a Who!",
"new_images": "3",
"total_images": "23"
},
{
"tmdb_id": "227159",
"imdb_id": "tt2170439",
"name": "Horrible Bosses 2",
"new_images": "3",
"total_images": "40"
},
{
"tmdb_id": "228161",
"imdb_id": "tt2224026",
"name": "Home",
"new_images": "2",
"total_images": "18"
},
{
"tmdb_id": "8009",
"imdb_id": "tt0091203",
"name": "Highlander",
"new_images": "4",
"total_images": "15"
},
{
"tmdb_id": "11638",
"imdb_id": "tt0372237",
"name": "Guess Who",
"new_images": "2",
"total_images": "4"
},
{
"tmdb_id": "44912",
"imdb_id": "tt1133985",
"name": "Green Lantern",
"new_images": "10",
"total_images": "57"
},
{
"tmdb_id": "253626",
"imdb_id": "tt3297330",
"name": "Good Kill",
"new_images": "1",
"total_images": "5"
},
{
"tmdb_id": "8461",
"imdb_id": "tt0808279",
"name": "Funny Games U.S.",
"new_images": "1",
"total_images": "10"
},
{
"tmdb_id": "13969",
"imdb_id": "tt0361620",
"name": "First Daughter",
"new_images": "5",
"total_images": "6"
},
{
"tmdb_id": "255343",
"imdb_id": "tt2515030",
"name": "Escobar: Paradise Lost",
"new_images": "1",
"total_images": "5"
},
{
"tmdb_id": "116711",
"imdb_id": "tt0848537",
"name": "Epic",
"new_images": "2",
"total_images": "39"
},
{
"tmdb_id": "853",
"imdb_id": "tt0215750",
"name": "Enemy at the Gates",
"new_images": "1",
"total_images": "25"
},
{
"tmdb_id": "10110",
"imdb_id": "tt0092965",
"name": "Empire of the Sun",
"new_images": "1",
"total_images": "25"
},
{
"tmdb_id": "38167",
"imdb_id": "tt0879870",
"name": "Eat Pray Love",
"new_images": "1",
"total_images": "8"
},
{
"tmdb_id": "238603",
"imdb_id": "tt2183034",
"name": "Earth to Echo",
"new_images": "7",
"total_images": "25"
},
{
"tmdb_id": "12516",
"imdb_id": "tt0100998",
"name": "Dreams",
"new_images": "6",
"total_images": "6"
},
{
"tmdb_id": "6171",
"imdb_id": "tt0285531",
"name": "Dreamcatcher",
"new_images": "1",
"total_images": "13"
},
{
"tmdb_id": "234094",
"imdb_id": "",
"name": "Dream Theater: Live At Luna Park",
"new_images": "2",
"total_images": "2"
},
{
"tmdb_id": "249170",
"imdb_id": "tt3090252",
"name": "Dinosaur 13",
"new_images": "2",
"total_images": "3"
},
{
"tmdb_id": "20126",
"imdb_id": "tt0073582",
"name": "Deep Red",
"new_images": "1",
"total_images": "4"
},
{
"tmdb_id": "286038",
"imdb_id": "",
"name": "Dead Snow Collection",
"new_images": "1",
"total_images": "5"
},
{
"tmdb_id": "256924",
"imdb_id": "tt1772288",
"name": "Danny Collins",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "36576",
"imdb_id": "tt0085384",
"name": "Curse of the Pink Panther",
"new_images": "1",
"total_images": "2"
},
{
"tmdb_id": "146",
"imdb_id": "tt0190332",
"name": "Crouching Tiger, Hidden Dragon",
"new_images": "1",
"total_images": "10"
},
{
"tmdb_id": "43055",
"imdb_id": "",
"name": "Conan the Barbarian Collection",
"new_images": "1",
"total_images": "4"
},
{
"tmdb_id": "18823",
"imdb_id": "tt0800320",
"name": "Clash of the Titans",
"new_images": "4",
"total_images": "78"
},
{
"tmdb_id": "229",
"imdb_id": "tt0026138",
"name": "Bride of Frankenstein",
"new_images": "1",
"total_images": "4"
},
{
"tmdb_id": "11072",
"imdb_id": "tt0071230",
"name": "Blazing Saddles",
"new_images": "4",
"total_images": "9"
},
{
"tmdb_id": "223357",
"imdb_id": "tt2734542",
"name": "Black Label Society: Unblackened",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "211088",
"imdb_id": "tt2468638",
"name": "Beyond The Edge",
"new_images": "3",
"total_images": "3"
},
{
"tmdb_id": "248934",
"imdb_id": "tt2790236",
"name": "Beloved Sisters",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "204922",
"imdb_id": "tt1726592",
"name": "Before I Go To Sleep",
"new_images": "3",
"total_images": "15"
},
{
"tmdb_id": "13524",
"imdb_id": "tt0058947",
"name": "Battle of the Bulge",
"new_images": "2",
"total_images": "3"
},
{
"tmdb_id": "99861",
"imdb_id": "tt2395427",
"name": "Avengers: Age of Ultron",
"new_images": "3",
"total_images": "96"
},
{
"tmdb_id": "703",
"imdb_id": "tt0075686",
"name": "Annie Hall",
"new_images": "1",
"total_images": "10"
},
{
"tmdb_id": "27214",
"imdb_id": "tt0085159",
"name": "Amityville 3-D",
"new_images": "1",
"total_images": "3"
},
{
"tmdb_id": "287587",
"imdb_id": "tt3318750",
"name": "Adult Beginners",
"new_images": "1",
"total_images": "1"
},
{
"tmdb_id": "259956",
"imdb_id": "tt2667918",
"name": "About Alex",
"new_images": "1",
"total_images": "13"
}
]

Thanks

Is a top-level array not supported ?

Hi

I am trying to parse an array but cannot get is to work.
My test code below produces an error: Array index on non-array map[]
Is a first top-level array not supported ?

var jdata =[ { "elem1": { "id": 1 } }, { "elem2": { "id": 1 } } ]

func main() {
data := map[string]interface{}{}
dec := json.NewDecoder(strings.NewReader(jdata))
dec.Decode(&data)
jq := jsonq.NewQuery(data)
v, err := jq.Int("0", "elem1", "id")
if err != nil {
fmt.Printf("ERROR: %s\n", err)
return
}
fmt.Printf("%v\n", v)
}

account for json.Number

The Float() and Int() methods should check for json.Number and return values appropriately

Add iterator

It would be great to have a .each(func(interface{}, string)) method that would pass each value and key to a closure. I'll do my best to add this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.