Używam Node.js do POST JSON na PostBin, ale dane są nieprawidłowo sformatowane (jak widać tutaj: http://www.postbin.org/1cpndqw ).
Oto kod, którego używam do tesT:
var http = require('http');
var options = {
host: 'www.postbin.org',
port: 80,
path: '/1cpndqw',
method: 'POST'
};
var req = http.request(options, function(res) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data', function (chunk) {
console.log('BODY: ' + chunk);
});
});
req.write(JSON.stringify({ a:1, b:2, c:3 }, null, 4));
req.end();
javascript
json
node.js
webhooks
donald
źródło
źródło
{"a":1,"b":2,"c":3}
czy naprawiłeś swój problem? Wygląda na to, że dane zostały przesłane poprawnie.Odpowiedzi:
Cóż, głównie dlatego, że JSON nie dba o to, jak jest sformatowany, a Ty sam nie formatujesz. Potrzebujesz ładnej drukarki javascript, jeśli cię to obchodzi, ale pierwsze pytanie brzmi: „Dlaczego cię to obchodzi?”
Oto kod prettyprinting z przepisów Javascript.
Faktycznie istnieje cała masa różnych przykładów tutaj na SO.
AKTUALIZACJA
Okay, więc teraz robi to, co chcesz, zapytajmy, czy postępujesz właściwie. Jak zauważyło kilka osób, nie musisz przesyłać tych dodatkowych znaków nowej linii i tabulatorów ani spacji; koszt wydajności jest niewielki, prawdopodobnie w okolicach 2-5 procent, ale nigdy nie wiadomo, kiedy będziecie potrzebować kilku procent.
Z drugiej strony zgadzam się całkowicie, że znacznie wygodniej jest odczytać dane wyjściowe JSON jako ładnie wydrukowany tekst. Ale jest inne rozwiązanie - prawdopodobnie nadal używasz przeglądarki do przeglądania tych wyników, więc zamiast ładnie drukować go do transmisji, użyj prettyprinter po stronie klienta. Używam JSONView dla Chrome i JSONView w Firefoksie. Wiele debuggerów również ładnie wydrukuje wyniki JSON.
źródło
Użyj
JSON.stringify(object, null, 4)
gdzie4
jest liczbą spacji, które mają być używane jako jednostka wcięcia. Możesz także użyć,"\t"
jeśli chcesz, karty. W rzeczywistości jest to część specyfikacji ECMAScript 5 i jest udokumentowana w MDN .źródło
Użyłem dwuetapowego procesu, który okazał się skuteczny:
var output = JSON.parse(insert_json_here); var print_to_file = JSON.stringify(output, null, "\t")
źródło
Powinieneś sprawdzić underscore-cli - jest to narzędzie wiersza poleceń do inspekcji i przetwarzania danych JSON.
źródło