Como posso fazer o arquivo de texto para o arquivo json? [fechadas]

0

Eu tenho um arquivo de texto com algo parecido com o seguinte:

google.com,[email protected],[email protected]
latter.com,[email protected]

Estou tentando converter este texto para o formato Json assim:

{
"domain": "google.com",
"emails":[{"email":"[email protected]","First":"xyz","Last":"pqr"},{"email":"[email protected]","First":"xyz","Last":"pqr"}]

}
{
"domain": "latter.com",
"emails":[{"email":"[email protected]","First":"xyz","Last":"pqr"}]
}

É possível transformar tal texto em algo nesse tipo de formato JSON? Por favor me avise.

    
por Jaffer Wilson 25.01.2017 / 12:05

2 respostas

1

Perl rápido e sujo:

perl -MJSON -F, -lane '
    print encode_json({
        domain => shift @F, 
        emails => [map {{email => $_, First=>"xyz", Last=>"pqr"}} @F]
    })
' file

Ou feio feio awk

awk -F, '{
    printf "{\"domain\":\"%s\",\"emails\":[", $1
    sep=""
    for (i=2; i<=NF; i++) {
        printf "%s{\"email\":\"%s\",\"First\":\"xyz\",\"Last\":\"pqr\"}", sep, $i
        sep=","
    }
    print "]}"
}' file 
    
por glenn jackman 25.01.2017 / 15:34
1

@Jaffer Wilson Aqui está um script rápido e sujo que pode ajudá-lo

function to_json() {
echo -en '{\n"domain":"'"$1"'",\n"emails":['
shift
EC=0
for EMAIL in "$@"
do
    echo -n '{"email":"'"$EMAIL"'","First":"xyz","Last":"pqr"}'
    EC='expr "$EC" + 1'
    if [ "$EC" -ne "$#" ]; then
        echo -n ","
    fi
done
echo -e "]\n},"
}

while read LINE
do
    PARAMS=$(echo "$LINE" | tr "," " ")
    to_json "$PARAMS"
done

Eu salvei como convert_to_json.sh e suponho que data.txt é onde o texto é executado como

$ chmod +x convert_to_json.sh
$ ./convert_to_json.sh < data.txt
    
por Udayraj Bal 25.01.2017 / 12:53