[{"data":1,"prerenderedAt":395},["ShallowReactive",2],{"project-45722826":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":42,"post_text":44,"what":45,"said":58,"maker_in_thread":144,"shape":149,"grid":154,"attempts":356,"same_week":357,"maker_shows":33,"maker_hidden":386,"reader_version":387,"card":388},"45722826","JSON Query","I'm working on a tool that will probably involve querying JSON documents and I'm asking myself how to expose that functionality to my users.","post","Show HN: JSON Query","https:\u002F\u002Fjsonquerylang.org\u002F","jsonquerylang.org","wofo",1761582172,2025,154,70,474,3837,13,"notable","data","json query language","library",[24,25,26,27,21],"json query","jq","jsonpath","jsonata","mixed",-0.147,{"positive":31,"neutral":32,"mixed":33,"critical":34},5,14,1,9,29,{"idea":37,"design":39},{"positive":33,"critical":38},6,{"positive":40,"critical":41},4,3,[43,41,43,43,43,43,41,41,41,43,43,41,43,33,41,31,31,41,33,33,33,41,41,43,43,43,43,33,43,43,43,43,43,43,41,41,33,31,41,41],0,"I'm working on a tool that will probably involve querying JSON documents and I'm asking myself how to expose that functionality to my users.\n\nI like the power of `jq` and the fact that LLMs are proficient at it, but I find it right out impossible to come up with the right `jq` incantations myself. Has anyone here been in a similar situation? Which tool \u002F language did you end up exposing to your users?",{"problem":46,"audience":51,"pricing":51,"motivation":52,"time_to_build":51,"stack":56,"openness":57,"stage":57,"team_size":57},{"value":47,"source":48,"evidence":49},"Hard to write jq filters by hand for exposing JSON querying to users","maker",[50],{"id":7},null,{"value":53,"source":48,"evidence":54},"Maker finds jq incantations impossible to write unaided but likes its power and LLM support",[55],{"id":7},[],"unknown",{"praise":59,"objections":75,"requests":90,"questions":91,"alternatives":106},[60,68],{"value":61,"source":62,"evidence":63},"Called a nice language; kudos for the work","commenter",[64],{"id":65,"by":66,"text":67},"45730563","kunley","Lot of people focus on a similarity to jq et al, I guess the author had his reasons to craft own stuff. Kudos for all the work, it's a nice language. I find writing parsers a…",{"value":69,"source":62,"evidence":70},"Nice work with a jq-like feel",[71],{"id":72,"by":73,"text":74},"45724269","linhns","Nice work with a jq-esque feel. Website is cut on mobile devices though",[76,83],{"value":77,"source":62,"evidence":78},"Too cute; plain JavaScript syntax would be clearer",[79],{"id":80,"by":81,"text":82},"45725552","hyperhello",".friends | filter(.city == \"New York\") | sort(.age) | pick(.name, .age) mapValues(mapKeys(substring(get(), 0, 10))) This is all too cute. Why not just use JavaScript syntax? You…",{"value":84,"source":62,"evidence":85},"Just use jq; new query languages frustrate users",[86],{"id":87,"by":88,"text":89},"45724302","arccy","In the k8s world there's a random collection of json path, json query, some random expression language. Just use jq. None of the other ones are as flexible or widespread and you…",[],[92,99],{"value":93,"source":62,"evidence":94},"How does it compare to jq syntax?",[95],{"id":96,"by":97,"text":98},"45723914","tcdent","Doesn't the command-line utility `jq` already define a protocol for this? How do the syntaxes compare? (LLMs are already very adept at using `jq` so I would think it was…",{"value":100,"source":62,"evidence":101},"How does it compare to JSONata?",[102],{"id":103,"by":104,"text":105},"45723690","jawns","I'd like to know how it compares to https:\u002F\u002Fjsonata.org",[107,111,119,130,137],{"value":25,"source":62,"evidence":108},[109,110],{"id":96,"by":97,"text":98},{"id":87,"by":88,"text":89},{"value":112,"source":62,"evidence":113},"JSONata",[114,115],{"id":103,"by":104,"text":105},{"id":116,"by":117,"text":118},"45724735","HatchedLake721","https:\u002F\u002Fjsonpath.com\u002F or https:\u002F\u002Fjsonata.org\u002F",{"value":120,"source":62,"evidence":121},"JSONPath",[122,126],{"id":123,"by":124,"text":125},"45724472","thayne","There is a standard in RFC 9535 (JSONPath)[1]. But as far as I can tell, it isn't very widely used, and it has more limited functionality than some of the alternatives. [1]:…",{"id":127,"by":128,"text":129},"45726072","roxolotl","I hate jq as much as the next guy but it’s ubiquitous and great for this sort of thing. If you want a single path style query language I’d highly recommend JsonPath. It’s so much…",{"value":131,"source":62,"evidence":132},"JMESPath",[133],{"id":134,"by":135,"text":136},"45724843","cmckn","The AWS CLI supports JMESPath (https:\u002F\u002Fjmespath.org) for the `--query` flag. I don't think I've run into anything else that uses it. Pretty similar to JSONPath IIRC.",{"value":138,"source":62,"evidence":139},"JSONLogic",[140],{"id":141,"by":142,"text":143},"45724888","eknkc","Most alternatives being talked about are working on query strings (like `$.phoneNumbers[:1].type`) which is fine but can not be easily modeled \u002F modified by code. Things like…",{"comments":33,"answered":43,"key":145},[146],{"id":147,"text":148},"45724751","Would you mind sharing a bit more? Have you used them? How did that go?",{"commenters":150,"max_depth":151,"maker_replies":33,"first_comment_mins":152,"lifespan_hours":153},58,7,55,101,[155,159,161,165,168,170,173,176,179,181,184,187,190,193,196,199,202,205,208,210,213,214,218,221,225,228,229,231,234,237,240,241,244,249,253,257,260,262,265,267,268,271,273,275,279,282,285,289,292,295,296,299,302,304,306,309,312,314,316,317,320,324,328,333,335,339,344,347,349,352],[156,43,43,157,158,43],"45731074","other\u002Fneutral\u002Fdocs","nothrabannosir",[96,33,41,160,97,43],"project\u002Fneutral\u002Fidea",[162,33,43,163,164,43],"45724408","other\u002Fneutral\u002Fnone","jonny_eh",[166,33,43,163,167,43],"45725851","cryptonector",[169,33,43,163,164,43],"45725937",[171,33,43,163,172,43],"45725968","rendall",[174,33,43,163,175,43],"45735214","millerm",[177,33,43,163,178,43],"45735591","lioeters",[180,33,43,163,172,43],"45776602",[182,33,43,163,183,43],"45730437","ancarda",[185,33,41,160,186,43],"45725846","inlined",[188,189,43,157,167,43],"45725897",2,[191,189,43,163,192,43],"45730894","movpasd",[194,41,41,160,195,43],"45725198","mrtimo",[197,41,41,160,198,43],"45726748","zie",[200,40,43,157,201,43],"45726431","gcr",[203,40,43,157,204,43],"45727081","wpm",[206,40,43,163,207,43],"45728646","MrApathy",[209,40,43,163,201,43],"45755771",[211,40,43,157,212,43],"45729949","penguin_booze",[103,31,41,160,104,43],[215,31,43,216,217,43],"45723858","commenter\u002Fneutral\u002Fnone","Alifatisk",[219,31,43,216,220,43],"45724023","OrderlyTiamat",[222,31,33,223,224,43],"45725041","project\u002Fcritical\u002Fidea","gnarlouse",[226,31,41,160,227,43],"45731670","aeberhart",[116,38,41,160,117,43],[147,38,43,230,11,33],"maker\u002Fneutral\u002Fnone",[232,38,31,233,224,43],"45724947","project\u002Fpositive\u002Fdesign",[235,38,31,233,236,43],"45725158","mediaman",[238,38,31,233,239,43],"45730407","montekristooGDB",[87,151,33,223,88,43],[242,151,33,223,243,43],"45724775","voidfunc",[245,246,33,247,248,43],"45724539",8,"project\u002Fcritical\u002Fdesign","pscanf",[250,34,41,251,252,43],"45727568","project\u002Fneutral\u002Fnone","cweagans",[254,255,33,223,256,43],"45725844",10,"ccvannorman",[258,255,33,223,259,43],"45726124","joshribakoff",[141,261,41,160,142,43],11,[263,261,43,163,264,43],"45725110","throwaway091025",[80,266,33,247,81,43],12,[65,18,31,233,66,43],[269,32,43,163,270,43],"45724185","memelang",[272,32,43,163,224,43],"45725129",[274,32,43,163,270,43],"45726059",[276,277,43,163,278,43],"45724931",15,"peterohler",[280,277,43,163,281,43],"45725101","tyre",[283,277,43,163,284,43],"45725344","Eric_WVGG",[286,287,43,163,288,43],"45724301",16,"lenkite",[290,287,33,223,291,43],"45724358","nartho",[293,287,43,163,294,43],"45724359","miohtama",[123,287,43,157,124,43],[297,287,43,163,298,43],"45724586","NewJazz",[300,287,43,163,301,43],"45724708","Groxx",[303,287,43,163,298,43],"45726618",[305,287,43,163,124,43],"45734485",[307,287,43,163,308,43],"45724870","lelandbatey",[310,287,43,163,311,43],"45725969","phpnode",[313,287,43,163,243,43],"45724791",[315,287,43,157,288,43],"45725294",[134,287,43,163,135,43],[318,287,43,163,319,43],"45725086","gegtik",[321,322,41,160,323,43],"45728245",17,"ksclarke",[325,326,43,163,327,43],"45725615",18,"ivanjermakov",[329,330,41,331,332,43],"45725562",19,"maker\u002Fneutral\u002Fidea","hk1337",[72,334,33,247,73,43],20,[336,337,41,160,338,43],"45726817",21,"emadda",[340,341,31,342,343,43],"45724073",22,"project\u002Fpositive\u002Fidea","npodbielski",[345,341,43,163,346,43],"45724416","gabrielsroka",[348,341,41,160,343,43],"45731065",[127,350,41,351,128,43],23,"project\u002Fmixed\u002Fidea",[353,354,41,251,355,43],"45723789",24,"gfody",[],[358,363,368,373,378,382],{"id":359,"name":360,"points":361,"category":362},"45706792","oxdraw",266,"dev_tools",{"id":364,"name":365,"points":366,"category":367},"45715055","MyraOS",247,"infrastructure",{"id":369,"name":370,"points":371,"category":372},"45731366","Bash Screensavers",246,"creative",{"id":374,"name":375,"points":376,"category":377},"45684689","Deadstack",188,"productivity",{"id":379,"name":380,"points":381,"category":372},"45721352","ISS in Real Time",165,{"id":383,"name":384,"points":385,"category":362},"45717724","vite-plugin-use-golang",158,false,"v2",{"id":389,"name":5,"line":390,"ai":386,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":391,"top":18,"kw":392,"maker":11,"domain":10,"tier":19,"attempts":43,"strip":393,"url":9,"mix":394,"praise":61,"objection":77,"sub":21},45722826,"I'm working on a tool that will probably involve querying JSON documents and I'm asking myself how to expose…",-0.15,[24,25,26,27,21],"0300003330030135531113300001000000331533",[31,32,33,34],1793991132993]