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: "&#34; \u0022 %22 0x22 034 &#x22;",
    "/\\\"\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)