Warum willst du die Ausgabe so? JSON wurde nicht dafür entwickelt, dass Menschen die ganze Zeit lesen können, daher scheint es eine große Zeitverschwendung zu sein, Stunden mit Abständen zu verbringen.
– Erik Philips
18. Juli 2014 um 22:48 Uhr
@ErikPhilips, weil das System, auf dem ich die Ausgabe geben muss, so strukturiert ist, dass es die Eingabe wie folgt benötigt: ( [{“name”:”Sample Product Name”}, {“name”:”Sample Product Name 2″}]
– Benutzer3550203
18. Juli 2014 um 22:54 Uhr
Es ist also ein nicht standardbasiertes System, tut mir leid, das kann keinen Spaß machen.
– Erik Philips
18. Juli 2014 um 22:55 Uhr
@ErikPhilips Ich hatte das gleiche Problem bei der Arbeit mit APIGEE, vertrau mir, es macht überhaupt keinen Spaß!
– Arielle
19. August 2016 um 13:32 Uhr
Das ist vielleicht nicht das, was Sie wollen, aber wenn Sie nur wollen, dass es besser aussieht, würde ich empfehlen:
console.log(JSON.stringify(products).replace(/},{/g,'}, {'));
// /},{/g means all occurance of },{
Während dieser Code die Frage beantworten kann, würde die Bereitstellung von zusätzlichem Kontext dazu, wie und/oder warum er das Problem löst, den langfristigen Wert der Antwort verbessern. Lesen Sie dies.
– Shanteshwar Inde
30. Januar 2019 um 7:12 Uhr
Venryx
Wenn Sie eine json-Ausgabe wünschen, ist dies:
Einzelne Zeile
Hat Leerzeichen zwischen Prop-Namen und Prop-Werten (und zwischen Elementen)
Enthält Leerzeichen zwischen jedem Komma und dem nächsten Prop-Namen/Element
Sie können dies verwenden:
function Stringify_WithSpaces(obj) {
let result = JSON.stringify(obj, null, 1); // stringify, with line-breaks and indents
result = result.replace(/^ +/gm, " "); // remove all but the first space for each line
result = result.replace(/\n/g, ""); // remove line-breaks
result = result.replace(/{ /g, "{").replace(/ }/g, "}"); // remove spaces between object-braces and first/last props
result = result.replace(/\[ /g, "[").replace(/ \]/g, "]"); // remove spaces between array-brackets and first/last items
return result;
}
let obj = [{name: "Sample Product Name"}, {name: "Sample Product Name 2"}];
console.log("Stringified with spaces: " + Stringify_WithSpaces(obj));
Und hier ist die Funktion als einzeiliger Ausdruck:
Hier ist eine ausführlichere Version (in Typescript) mit Optionen:
export class ToJSON_WithSpaces_Options {
insideObjectBraces = false;
insideArrayBrackets = false;
betweenPropsOrItems = true;
betweenPropNameAndValue = true;
}
export function ToJSON_WithSpaces(obj, options?: Partial<ToJSON_WithSpaces_Options>) {
options = Object.assign({}, new ToJSON_WithSpaces_Options(), options);
let result = JSON.stringify(obj, null, 1); // stringify, with line-breaks and indents
result = result.replace(/^ +/gm, " "); // remove all but the first space for each line
result = result.replace(/\n/g, ""); // remove line-breaks
if (!options.insideObjectBraces) result = result.replace(/{ /g, "{").replace(/ }/g, "}");
if (!options.insideArrayBrackets) result = result.replace(/\[ /g, "[").replace(/ \]/g, "]");
if (!options.betweenPropsOrItems) result = result.replace(/, /g, ",");
if (!options.betweenPropNameAndValue) result = result.replace(/": /g, `":`);
return result;
}
Idealerweise wendet diese Art von Funktion die regulären Ausdrücke an frühere zum Entfernen der Zeilenumbrüche (damit sichergestellt werden kann, dass kein Text in vom Benutzer bereitgestellten Zeichenfolgen geändert wird), aber ich überlasse dies jemand anderem, da das oben Genannte für meinen Anwendungsfall ausreicht (und ich denke, die meisten anderen ).
14381900cookie-checkLeerzeichen zwischen der JSON.stringify-Ausgabeyes
Warum willst du die Ausgabe so? JSON wurde nicht dafür entwickelt, dass Menschen die ganze Zeit lesen können, daher scheint es eine große Zeitverschwendung zu sein, Stunden mit Abständen zu verbringen.
– Erik Philips
18. Juli 2014 um 22:48 Uhr
@ErikPhilips, weil das System, auf dem ich die Ausgabe geben muss, so strukturiert ist, dass es die Eingabe wie folgt benötigt: ( [{“name”:”Sample Product Name”}, {“name”:”Sample Product Name 2″}]
– Benutzer3550203
18. Juli 2014 um 22:54 Uhr
Es ist also ein nicht standardbasiertes System, tut mir leid, das kann keinen Spaß machen.
– Erik Philips
18. Juli 2014 um 22:55 Uhr
@ErikPhilips Ich hatte das gleiche Problem bei der Arbeit mit APIGEE, vertrau mir, es macht überhaupt keinen Spaß!
– Arielle
19. August 2016 um 13:32 Uhr