Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Как записать определенное содержимое в файл Json? (https://javascript.ru/forum/node-js-io-js/74566-kak-zapisat-opredelennoe-soderzhimoe-v-fajjl-json.html)

Floky 21.07.2018 15:48

Как записать определенное содержимое в файл 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
}

Audaxviator 21.07.2018 16:52

Короче, немного объяснений.
Файл формата 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' }

Резюме: не знаю, открыло ли вам это на что-то глаза...

Audaxviator 21.07.2018 17:23

Для пущей убедительности я только что проделал то же самое в языке 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, время: 02:04.