Как записать определенное содержимое в файл Json?
Вот мой код который выводит содержание profi.json
И ниже содержимое Json Вопрос как вывести не все содержимое а только к примеру "shopperName": "Ваня Иванов", И записать в другой файл DATA.json И вопрос другой Как сделать чтение нескольких файлов JSON и после не перезапись в DATA.json а именно добавление в этот же файл
var fs = require('fs');
var file = __dirname + '/profi.json';
fs.readFile(file, 'utf8', function (err, data) {
if (err) {
console.log('Error: ' + err);
return;
}
data = JSON.parse(data);
console.dir(data);
});
{
"orderID": 12345,
"shopperName": "Ваня Иванов",
"shopperEmail": "ivanov@example.com",
"contents": [
{
"productID": 34,
"productName": "Супер товар",
"quantity": 1
},
{
"productID": 56,
"productName": "Чудо товар",
"quantity": 3
}
],
"orderCompleted": true
}
|
Короче, немного объяснений.
Файл формата JSON - это строка. Одна строка. Просто строка символов (char - ну, если вы знаете, что это такое). На самом деле можно создать такой файл с именем, допустим, ne_json (без расширения)
{"a":"zx","b":"sd"}
запросить его, распарсить...
var fs = require('fs');
var f = fs.readFileSync(__dirname + '/ne_json');
var j = JSON.parse(f)
console.log(j);
и получить в результате javascript-объект
{ a: 'zx', b: 'sd' }
Резюме: не знаю, открыло ли вам это на что-то глаза... |
Для пущей убедительности я только что проделал то же самое в языке Golang (я как раз сейчас занимаю себя его освоением).
Вот так:
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
)
func main() {
fmt.Println(decodJSON("./ne_json")["a"])
fmt.Println(decodJSON("./ne_json")["b"])
}
func decodJSON(file string) map[string]interface{} {
bytes, err := ioutil.ReadFile(file)
if err != nil {
fmt.Println(err)
}
var dat map[string]interface{}
if err := json.Unmarshal(bytes, &dat); err != nil {
panic(err)
}
return dat
}
И - о чудо! - строчка благополучно прочиталась и была "декодирована" в структуру с результатом в консоль zx sd Резюме: я рад, что мои теоретические представления о том, что расширение *.json не значит ничего (от слова совсем), полностью подтвердились. P.S. И не стоит удивляться, что для той же примитивной операции, но - в Go, потребовало сильно больше букав напейсать. Это оттого, что JSON - аббревиатура "JavaScript Object Notation". |
| Часовой пояс GMT +3, время: 06:12. |