Konvertieren#
Oft passt der Datentyp nicht und muss angepasst werden. Dafür stehen spezielle Funktionen zur Verfügung.
toString#
Jedes Objekt kann in eine Stringrepräsentation überführt werden.
let x = 999
let y = x.toString()
console.log(x, typeof x)
console.log(y, typeof y)
toBoolean#
Gibt es nicht! Eine eigene Funktion [1] hilft:
stringToBoolean: function(string){
switch(string.toLowerCase().trim()){
case "true":
case "yes":
case "1":
return true;
case "false":
case "no":
case "0":
case null:
return false;
default:
return Boolean(string);
}
}
Wenn die Schreibweise klar ist, kann wie folgt konvertiert werden:
let geliefert = 'true'
const wahrheitwert = geliefert === 'true' ? true; false
ParseInt#
String in Zahl wandeln:
let input = parseInt("111 ist die Eingabe aus einem Formular")
console.log(input, typeof input)
JSON#
JSON-Beispiele#
Viele Varianten von Name-Wert-Paaren in in einem Array (entnommen einer Python-Testdatei).
const superjson = [
"JSON Test Pattern pass1",
{ "object with 1 member": ["array with 1 element"] },
{},
[],
-42,
true,
false,
null,
{
integer: 1234567890,
real: -9876.54321,
e: 0.123456789e-12,
E: 1.23456789e34,
"": 23456789012e66,
zero: 0,
one: 1,
space: " ",
quote: '"',
backslash: "\\",
controls: "\b\f\n\r\t",
slash: "/ & /",
alpha: "abcdefghijklmnopqrstuvwyz",
ALPHA: "ABCDEFGHIJKLMNOPQRSTUVWYZ",
digit: "0123456789",
"0123456789": "digit",
special: "`1~!@#$%^&*()_+-={':[,]}|;.</>?",
hex: "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
true: true,
false: false,
null: null,
array: [],
object: {},
address: "50 St. James Street",
url: "http://www.JSON.org/",
comment: "// /* <!-- --",
"# -- --> */": " ",
" s p a c e d ": [
1, 2, 3,
4, 5, 6, 7,
],
compact: [1, 2, 3, 4, 5, 6, 7],
jsontext: '{"object with 1 member":["array with 1 element"]}',
quotes: "" \u0022 %22 0x22 034 "",
"/\\\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?":
"A key can be any string",
},
0.5,
98.6,
99.44,
1066,
1e1,
0.1e1,
1e-1,
1,
2,
2,
"rosebud",
];
console.log(superjson);
Text zu Objekt#
Eine Zeichenkette die ein Literal für ein JSON-Objekt darstellt, kann direkt in ein Objekt konvertiert werden.
const obj = JSON.parse(text);
Objekt zu Text#
const text = JSON.stringify(obj)
JavaScript- und JSON-Objekt#
Beachte die Änderungen, bei der Darstellung der Anführungsstriche.
let obj1 = { eins: 1, "zwei":2, "drei":3 }
let obj2 = { eins: obj1.eins, zwei: 2, drei: obj1.eins + obj1.zwei }
console.log(obj2)
{ eins: 1, zwei: 2, drei: 3 }
let obj_as_json = JSON.stringify(obj2)
console.log(obj_as_json)
{"eins":1,"zwei":2,"drei":3}
let obj_from_json = JSON.parse(obj_as_json)
console.log(obj_from_json)
{ eins: 1, zwei: 2, drei: 3 }
JSON ist einfach und übersichtlich#
Wirklich?
Quelle: Glossary-Beispiel von Stackoverflow
let eintrag = `
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "S",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}`
let glossary_obj = JSON.parse(eintrag)
Inhalte des Objektes#
Quelle: Beispiel mit Rekursion von Stackoverflow
function iterate(obj, stack) {
for (var property in obj) {
if (obj.hasOwnProperty(property)) {
if (typeof obj[property] == "object") {
iterate(obj[property], stack + '.' + property);
} else {
console.log(property + " " + obj[property]);
}
}
}
}
iterate(glossary_obj, '')
oder (
// npm install flat
var flatten = require('flat')
flatten(glossary_obj)