2017-04-27 17 views
0

を解析します。Groovyは、私は文字列化JSONこのように見えるがあり、文字列化JSON

私は次のコードでJsonSlurperを使用して試してみました:

def jsonSlurper = new JsonSlurper() 
    def object = jsonSlurper.parseText(param) 

    object.a 

しかし、それは理由uに失敗しました:

Caused by: groovy.json.JsonException: expecting '}' or ',' but got current char 'u' with an int value of 117 

The current character read is 'u' with an int value of 117 
expecting '}' or ',' but got current char 'u' with an int value of 117 
line number 1 
index number 1 
{a': u'1', u'b': 2, u'c': 3} 

どのように私はこの文字列を解析することができますか?

多くのありがとう

+2

だないJSON、_ "文字列化" _またはそれ以外の場合は。なぜキーの前に 'u'を付けるのですか?キーが二重引用符で囲まれていないのはなぜですか?文字列の値が二重引用符で囲まれていないのはなぜですか? '{" a ":" 1 "、" b ":2、" c ":3}' –

+0

でもOKですがこれをきれいにする方法はありますか?この 'param.replaceAll( 'u \' '、' \ '')'を使ってみましたが、一重引用符で失敗した場合は – Spearfisher

+2

どこから来たのですか?あなたのコードがあらゆる種類のクレイジーなエッジケースを処理するよりも、アップストリーム(あなたにこれを見ているもの)をよく掃除するほうがよい場合があります。 –

答えて

0

これはJSONではなく有効なPythonのようです。あなたがそのプログラムで、次のような何かを、あなたのデータを通過したPythonプログラムを制御すると仮定:

import json 
json.dumps({u'a': u'1', u'b': 2, u'c': 3 }) 

あなたはbashのパイプラインからあなたのGroovyスクリプトを呼び出している場合は、Pythonのをコントロールしていない場合パイプラインに次のステップを追加できますか?あなたはGroovyのからのPythonのラインを呼び出すことができます最後のケースで

echo "{u'a': u'1', u'b': 2, u'c': 3 }" | python -c "import json, sys, fileinput; print json.dumps(eval((open(sys.argv[1]) if sys.argv[1:] else sys.stdin).read())) " 

...

関連する問題