Как я могу сделать текстовый файл в файл JSON?
У меня есть текстовый файл, содержащий что-то вроде следующего:
google.com,father@google.com,json@google.com
latter.com,john@latter.com
Я пытаюсь преобразовать этот текст в формат Json следующим образом:
{
"domain": "google.com",
"emails":[{"email":"father@google.com","First":"xyz","Last":"pqr"},{"email":"json@google.com","First":"xyz","Last":"pqr"}]
}
{
"domain": "latter.com",
"emails":[{"email":"john@latter.com","First":"xyz","Last":"pqr"}]
}
Можно ли сделать такой текст в формате JSON? Пожалуйста, дайте мне знать.
2 ответа
Быстрый и грязный Perl:
perl -MJSON -F, -lane '
print encode_json({
domain => shift @F,
emails => [map {{email => $_, First=>"xyz", Last=>"pqr"}} @F]
})
' file
Или уродливый уродливый 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
@Jaffer Wilson Вот быстрый и грязный скрипт bash, который может помочь вам
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
Я сохранил его как convert_to_json.sh и предположил, что в data.txt текст запускается как
$ chmod +x convert_to_json.sh
$ ./convert_to_json.sh < data.txt