Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在每个json对象上分割jq输出_Java_Spring_Bash_Curl_Jq - Fatal编程技术网

Java 如何在每个json对象上分割jq输出

Java 如何在每个json对象上分割jq输出,java,spring,bash,curl,jq,Java,Spring,Bash,Curl,Jq,该输出被馈送到curl请求 参考: 但是下面的java端点只被命中一次,并且mapdata只有一个标题、描述和语言键。为什么其他json项丢失了 curl localhost:9200/dewikiquote/_search -d '{"query": {"match_all":{}}}' \ | jq '.hits.hits[] | ._source' \ | jq '{title: .heading[0], description: .text, languageKey: "ja"} \ |

该输出被馈送到curl请求

参考:

但是下面的java端点只被命中一次,并且map
data
只有一个标题、描述和语言键。为什么其他json项丢失了

curl localhost:9200/dewikiquote/_search -d '{"query": {"match_all":{}}}' \
| jq '.hits.hits[] | ._source' \
| jq '{title: .heading[0], description: .text, languageKey: "ja"} \
| curl -H 'Content-Type: application/json'  -XPUT 'http://localhost:11223/context/api/add' -d @-
@RequestMapping(path=“/api/add”,method=RequestMethod.PUT)
public void add(@RequestBody映射数据)
{ 
...

这是因为jq输出没有在每个json对象上进行拆分吗?如果是,我如何使用jq进行拆分?

我认为您需要这样做:

@RequestMapping(path = "/api/add", method = RequestMethod.PUT)
public void add(@RequestBody Map<String, String> data)
{ 
...

返回的json列表中缺少“.[]”数组操作运算符这里有一个替代方法,它循环遍历结果并分别发送:

请注意,
-c
可以不缩进地打印每个输出

curl localhost:9200/dewikiquote/_search -d '{"query": {"match_all":{}}}' \
| jq '.[] | {title: .title, description: .description, languageKey: "ja"} \
| curl -H 'Content-Type: application/json'  -XPUT 'http://localhost:11223/context/api/add' -d @-

所以让我澄清一下,你是在向ElasticSearch请求一些东西,然后试图将其输出输入到另一个与java实现的服务器对话的curl中,对吗?是的,我正试图用hibernate search+lucene实现elastic搜索类型的功能。我想获取wikiquote数据来测试我的自定义分析器当你试图把它发送到终点时,数据不再是一个数组,不能说100%,但是@ ZeShan-Read可以工作,如果不是,你可能想考虑在输出上做一些循环。
curl localhost:9200/dewikiquote/_search -d '{"query": {"match_all":{}}}' \
| jq '.[] | {title: .title, description: .description, languageKey: "ja"} \
| curl -H 'Content-Type: application/json'  -XPUT 'http://localhost:11223/context/api/add' -d @-
curl localhost:9200/dewikiquote/_search -d '{"query": {"match_all":{}}}' \
| jq '.hits.hits[] | ._source' \
| jq -c '{title: .heading[0], description: .text, languageKey: "ja"} \
| while read next; do curl -H 'Content-Type: application/json'  -XPUT 'http://localhost:11223/context/api/add' -d $next; done