M
M
Maksim Mysak2015-02-09 10:48:34
JavaScript
Maksim Mysak, 2015-02-09 10:48:34

How to parse a string into a js object?

There is a line

На входе
javascript.st =1
javascript.st1 =2
res.par1.par2 =212
res.js =2123

на выходе

{
  "javascript": {
    "st": 1,
    "st2": 2
  },
  "res": {
    "par1": {
      "par2": 212
    },
    "js": 2123
  }
}

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
Sergey Melnikov, 2015-02-09
@maksimmysak

your output is invalid code:

{
  "javascript": {
    "st": 1,
    "st2": 2
  },
  "res": {
    "par1": {
      "par2": 212
    },
    "js": 2123
  }
}

var str = "javascript.st =1 \
javascript.st1 = 2 \
res.par1.par2 =212 \
res.js =2123";

function parser(str) {  
  var rgxp = /([\S]*)\s?=\s?(\d*)/g,
    result = {},
    substr, keys, parents, i;
  while (substr = rgxp.exec(str)) {
    substr = substr[0].split("=")
    keys = substr[0].trim().split(".")
    parent = result
    for (i = 0, ln = keys.length; i < ln; i++) {
      parent[keys[i]] = parent[keys[i]] || {}
      i == (ln - 1) ? (parent[keys[i]] = substr[1].trim()) : (parent = parent[keys[i]])
    }
  }
  return result
}

JSON.stringify(parser(str))
// {"javascript":{"st":"1","st1":"2"},"res":{"par1":{"par2":"212"},"js":"2123"}}

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question