반응형
jq를 사용하여 JSON 문자열 구문 분석
다음 jq
과 같은 JSON 구조를 구문 분석 하려고합니다 .
{
"a" : 1,
"b" : 2,
"c" : "{\"id\":\"9ee ...\",\"parent\":\"abc...\"}\n"
}
즉, JSON의 요소는 이스케이프 된 json이있는 문자열입니다.
그래서 저는 $ jq [.c] myFile.json | jq [.id]
그러나 그것은 jq: error: Cannot index string with string
.c의 출력이 JSON이 아닌 문자열이기 때문입니다. 이 문자열을 구문 분석하기 위해 jq를 어떻게 얻습니까?
내 초기 해결책은 sed를 사용하여 모든 이스케이프 문자 ( \":\"
, \",\"
및 \"
) 를 대체하는 것입니다. 하지만 이는 지저분합니다. 이렇게 jq
할 수 있는 방법이 있다고 가정 합니다.
감사!
편집 : 또한 여기에서 사용할 수있는 jq 버전은 다음과 같습니다.
$ jq --version
jq version 1.3
필요한 경우 업데이트 할 수있을 것 같습니다.
jq에는이를위한 fromjson
내장 기능이 있습니다.
jq '.c | fromjson | .id' myFile.json
fromjson
버전 1.4에서 추가되었습니다.
문자를 이스케이프 해제하는 원시 출력 (-r)을 사용할 수 있습니다.
jq -r .c myfile.json | jq .id
ADDENDUM : 이것은 jq 1.3 이상에서 작동한다는 장점이 있습니다. 실제로 -r 옵션이있는 모든 버전의 jq에서 작동합니다.
참조 URL : https://stackoverflow.com/questions/35154684/use-jq-to-parse-a-json-string
반응형
'development' 카테고리의 다른 글
ANTLR4로 AST를 만드는 방법은 무엇입니까? (0) | 2020.12.28 |
---|---|
Docker가 변경된 경우에만 pip requirements.txt를 실행하는 방법은 무엇입니까? (0) | 2020.12.28 |
PHP-MySQL에서 단일 레코드를 읽는 간단한 방법 (0) | 2020.12.28 |
현재 수업과 방법을 얻으시겠습니까? (0) | 2020.12.28 |
Android 활동 레이블 및 레이블 표시 줄을 비활성화 / 제거하는 방법은 무엇입니까? (0) | 2020.12.28 |