# Keyに角括弧( ‘\[’ )が使用されているJSONデータを取り込みたい

**URL:** https://discuss.elastic.co/t/key-json/255149
**Category:** 日本語による質問・議論はこちら
**Created:** [November 12, 2020, 5:10am UTC](https://discuss.elastic.co/t/key-json/255149 "2020-11-12T05:10:33Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![sshota](https://avatars.discourse-cdn.com/v4/letter/s/f9ae1b/32.png) [@sshota](https://discuss.elastic.co/u/sshota)
#### Post date: [November 12, 2020, 5:10am UTC](https://discuss.elastic.co/t/key-json/255149/1 "2020-11-12T05:10:33Z")

</div>

お世話になります。

初歩的な質問ですみません。  
keyに角括弧( ‘[’ )が使用されているJSONデータをlogstashを使ってESに取り込みたいのですが、エスケープなどをしてもlogstashでJSONパースエラーとなり取り込みすることができません。  
s3inputプラグインを使用しており、codecにjsonを指定しております。

このデータを取り込みできるようにするにはどうしたらよいのでしょうか。

### 取り込んだJSONデータ

```auto
{"WATER \[mL\]": 100}

```

### エラーメッセージ

```auto
[ERROR][logstash.codecs.json] JSON parse error, original data now in message field {:error=>#<LogStash::Json::ParserError: Unrecognized character escape '[' (code 91)
 at [Source: (String)"{"WATER \[mL\]": 100}"; line: 1, column: 11]>, :data=>"{\"WATER \\[mL\\]\": 100}"}

```

### logstashバージョン

7.3.2

---

<div class="post-metadata">

### Author: ![sshota](https://avatars.discourse-cdn.com/v4/letter/s/f9ae1b/32.png) [@sshota](https://discuss.elastic.co/u/sshota)
#### Post date: [November 12, 2020, 6:15am UTC](https://discuss.elastic.co/t/key-json/255149/2 "2020-11-12T06:15:36Z")

</div>

角括弧の前にエスケープをしない場合は以下のエラーメッセージとなります。

```auto
[ERROR][logstash.codecs.json] JSON parse error, original data now in message field {:error=>#<LogStash::Json::ParserError: Invalid FieldReference: `WATER [mL]`>, :data=>"{\"WATER [mL]\": 100}"}

```

---

<div class="post-metadata">

### Author: ![miki](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/miki/32/53228_2.png) [@miki](https://discuss.elastic.co/u/miki)
#### Post date: [November 25, 2020, 2:25am UTC](https://discuss.elastic.co/t/key-json/255149/3 "2020-11-25T02:25:54Z")

</div>

本問題については、[本チケット](https://github.com/elastic/logstash/issues/11608)でレポートされています。

現状の簡単な回避方法としては、inputのcodecでjsonに変換するのではなく、以下のように角括弧を別の文字に変換、もしくは、削除してからjsonにパースすることで回避できます。

```auto
filter {
  mutate {
    gsub => [
      "message","\[","<",
      "message","\]",">"
      ]
  }
  json {
      source => "message"
    }
}

```

---

<div class="post-metadata">

### Author: ![sshota](https://avatars.discourse-cdn.com/v4/letter/s/f9ae1b/32.png) [@sshota](https://discuss.elastic.co/u/sshota)
#### Post date: [November 30, 2020, 6:11am UTC](https://discuss.elastic.co/t/key-json/255149/4 "2020-11-30T06:11:34Z")

</div>

まだオープンなチケットなのですね。承知いたしました。  
現状の簡単な回避方法についてもご教示ありがとうございます。  
色々と試してみたいと思います。

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [December 28, 2020, 6:11am UTC](https://discuss.elastic.co/t/key-json/255149/5 "2020-12-28T06:11:36Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
