Como substituir um elemento em um arquivo JSON?

1

Eu preciso substituir o seguinte texto:

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

com

"name": "abc1234", age: "24"
    
por Astro 19.12.2017 / 16:57

3 respostas

9

Se bem entendi, você quer substituir a lista "name" pelo primeiro elemento. Se este for o caso, tente um processador Json:

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

(adaptações para o exemplo completo unpost podem ser necessárias)

    
por 19.12.2017 / 19:08
6

A resposta geral é

man 7 regex

mas especificamente

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

ou

sed -E 's/"name" *: *\["([^"]+)"\], *age *: *"([0-9]+)"/"name": "", age:""/g' file > new
grep -E '"name" *: *\[' new
    
por 19.12.2017 / 17:41
5

Outra opção seria usar o módulo JSON do Python como em esta resposta SO . Aqui está um exemplo simples:

  • 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)
    
  • Saída

    Before: {'name': ['abc1234'], 'age': '24'}
    After:  {'name': 'abc1234', 'age': '24'}
    
por 20.12.2017 / 11:25