web-dev-qa-db-ja.com

JSONファイルの要素を置き換える方法は?

次のテキストを置き換える必要があります。

"name":["abc1234"], age:"24" 

"name": "abc1234", age: "24"
1
Atish

私が正しく理解している場合は、「名前」リストを最初の要素に置き換えてください。この場合は、Jsonプロセッサを試してください。

jq '.name=.name[0]' ex.json

(未投稿の完全な例への適応が必要になる場合があります)

9
JJoao

一般的な答えは

man 7 regex

しかし、具体的には

sed -E 's/"name":\["abc1234"\], age:"24" /"name": "abc1234", age:"24"/g' file > new

または

sed -E 's/"name" *: *\["([^"]+)"\], *age *: *"([0-9]+)"/"name": "\1", age:"\2"/g' file > new
grep -E '"name" *: *\[' new
7
n.caillou

別のオプションは Python JSON modulethis SO answer のように使用することです。ここに簡単な例を示します:

  • in.json

    { "name":["abc1234"], "age":"24" }
    
  • replaceInJson.py

    #!/usr/bin/python3
    
    import json
    
    with open("in.json", "r") as f:
        data = json.load(f)
        print("Before:", data)
        data["name"] = data["name"][0]
        print("After: ", data)
    
  • 出力

    Before: {'name': ['abc1234'], 'age': '24'}
    After:  {'name': 'abc1234', 'age': '24'}
    
5
Murphy