Assaf Gordon a6460f4fe2 Report filename:line on runtime errors (fix #752)
With this patch, jq run-time errors printed to stderr will contain the
filename and line of the offending input.

But note that the JSON text parser does (yet) print the input filename
on parse error.  A jq run-time error is a jq program error, not
including syntax errors nor JSON text input format errors.

Examples:

With stdin and multiple lines:

    $ printf '{"a":43}\n{"a":{"b":66}}\n' | ./jq '.a+1'
    44
    jq: error (at stdin:2): object and number cannot be added

With multiple files:

    $ printf '{"a":43}' > 1.json
    $ printf '{"a":"hello"}\n' > 2.json
    $ printf '{"a":{"b":66}}\n' > 3.json
    $ ./jq '[.a]|@tsv' 1.json 2.json 3.json
    "43"
    "hello"
    jq: error (at 3.json:1): object is not valid in a csv row

With very long lines (spanning multiple `fgets` calls):

    $ (  printf '{"a":43}\n' ;
         printf '{"a":{"b":[' ; seq 10000 | paste -d, -s | tr -d '\n' ;
         printf ']}}\n' ;
         printf '{"a":"hello"}\n' ) | ./jq '[.a] | @tsv'
    "43"
    jq: error (at stdin:2): object is not valid in a csv row
    "hello"

With raw input:

    $ seq 1000 | ./jq --raw-input 'select(.=="700") | . + 10'
    jq: error (at stdin:700): string and number cannot be added

Caveat:
The reported line will be the last line of the (valid) parsed JSON data.
Example:

    $ printf '{\n"a":\n"hello"\n\n\n}\n' | ./jq '.a+4'
    jq: error (at stdin:6): string and number cannot be added
2015-05-20 23:38:22 -05:00
2015-05-19 01:19:51 -05:00
2014-08-14 03:31:25 -05:00
2015-05-18 23:02:11 -05:00
2014-07-30 13:19:46 -05:00
2015-05-20 10:21:30 -05:00
2013-12-04 18:21:41 -06:00
2014-12-30 11:42:45 -06:00
2015-03-24 14:59:29 -05:00
2015-05-11 21:36:46 -05:00
2013-12-27 12:49:15 -06:00
2013-06-21 11:57:12 -05:00
2015-05-11 21:36:47 -05:00
2013-06-22 13:34:24 +01:00
2015-01-14 01:32:11 -06:00
2015-03-06 00:14:15 -06:00
2015-03-30 22:36:04 -05:00
2015-03-30 22:36:04 -05:00
2015-03-30 22:36:04 -05:00
2014-02-21 10:51:16 -06:00
2015-03-30 22:36:04 -05:00
2015-04-28 10:36:21 -05:00
2014-06-16 15:29:48 -05:00
2015-03-30 22:36:04 -05:00
2015-03-30 22:36:04 -05:00
2015-03-30 22:36:04 -05:00
2015-05-02 17:36:37 -05:00
2015-01-01 03:14:55 -06:00

jq

jq is a command-line JSON processor.

If you want to learn to use jq, read the documentation at http://stedolan.github.io/jq. This documentation is generated from the docs/ folder of this repository. You can also try it online at jqplay.org.

If you want to hack on jq, feel free, but be warned that its internals are not well-documented at the moment. Bring a hard hat and a shovel. Also, read the wiki: http://github.com/stedolan/jq/wiki

Source tarball and built executable releases can be found on the homepage and on the github release page, https://github.com/stedolan/jq/releases

If you're building directly from the latest git, you'll need flex, bison (3.0 or newer), libtool, make, and autoconf installed. To get regexp support you'll also need to install Oniguruma (note that jq's tests require regexp support to pass). To build, run:

autoreconf -i   # if building from git
./configure
make -j8
make check

To build without bison or flex, add --disable-maintainer-mode to the ./configure invocation:

./configure --disable-maintainer-mode

(Developers must not use --disable-maintainer-mode, not when making changes to the jq parser and/or lexer.)

To build a statically linked version of jq, run:

make LDFLAGS=-all-static

After make finishes, you'll be able to use ./jq. You can also install it using:

sudo make install

If you're not using the latest git version but instead building a released tarball (available on the website), then you won't need to run autoreconf (and shouldn't), and you won't need flex or bison.

To cross-compile for OS X and Windows, see docs/Rakefile's build task and scripts/crosscompile. You'll need a cross-compilation environment, such as Mingw for cross-compiling for Windows.

Cross-compilation requires a clean workspace, then:

# git clean ...
autoreconf -i
./configure
make distclean
scripts/crosscompile <name-of-build> <configure-options>

Use the --host= and --target= ./configure options to select a cross-compilation environment. See also the wiki.

Send questions to http://stackoverflow.com/questions/tagged/jq or to the #jq channel (http://irc.lc/freenode/%23jq/) on Freenode (https://webchat.freenode.net/).

S
Description
No description provided
Readme BSD-2-Clause, MIT
24 MiB
0 Stars 1 Watchers 0 Forks
Languages
C 78.7%
M4 6.4%
Shell 6.3%
Yacc 3.2%
jq 1.5%
Other 3.9%