[javascript] JS에서 객체로의 문자열

나는 문자열을 가지고있다.

string = "firstName:name1, lastName:last1"; 

이제 하나의 객체 obj가 필요합니다.

obj = {firstName:name1, lastName:last1}

JS에서 어떻게 할 수 있습니까?



답변

실제로 가장 좋은 솔루션은 JSON을 사용하는 것입니다.

선적 서류 비치

JSON.parse(text[, reviver]);

예 :

1)

var myobj = JSON.parse('{ "hello":"world" }');
alert(myobj.hello); // 'world'

2)

var myobj = JSON.parse(JSON.stringify({
    hello: "world"
});
alert(myobj.hello); // 'world'

3) JSON으로 함수 전달

var obj = {
    hello: "World",
    sayHello: (function() {
        console.log("I say Hello!");
    }).toString()
};
var myobj = JSON.parse(JSON.stringify(obj));
myobj.sayHello = new Function("return ("+myobj.sayHello+")")();
myobj.sayHello();


답변

문자열은 중괄호가없는 JSON 문자열처럼 보입니다.

그러면 작동합니다.

obj = eval('({' + str + '})');


답변

내가 올바르게 이해한다면 :

var properties = string.split(', ');
var obj = {};
properties.forEach(function(property) {
    var tup = property.split(':');
    obj[tup[0]] = tup[1];
});

속성 이름이 콜론의 왼쪽에 있고 문자열 값이 오른쪽에 있다고 가정합니다.

참고 Array.forEach자바 스크립트 1.6 – 당신은 최대의 호환성을 위해 툴킷을 사용할 수 있습니다.


답변

이 간단한 방법은 …

var string = "{firstName:'name1', lastName:'last1'}";
eval('var obj='+string);
alert(obj.firstName);

산출

name1


답변

JQuery를 사용하는 경우 :

var obj = jQuery.parseJSON('{"path":"/img/filename.jpg"}');
console.log(obj.path); // will print /img/filename.jpg

기억하세요 : 평가는 악입니다! :디


답변

JSON.parse () 메서드를 사용하려면 Object 키를 따옴표 안에 넣어야 제대로 작동 할 수 있으므로 JSON.parse () 메서드를 호출하기 전에 먼저 문자열을 JSON 형식의 문자열로 변환해야합니다.

var obj = '{ firstName:"John", lastName:"Doe" }';

var jsonStr = obj.replace(/(\w+:)|(\w+ :)/g, function(matchedStr) {
  return '"' + matchedStr.substring(0, matchedStr.length - 1) + '":';
});

obj = JSON.parse(jsonStr); //converts to a regular object

console.log(obj.firstName); // expected output: John
console.log(obj.lastName); // expected output: Doe

문자열에 복잡한 객체 (다음과 같은)가 있고 여전히 올바르게 변환되는 경우에도 작동합니다. 문자열 자체는 작은 따옴표로 묶어야합니다.

var strObj = '{ name:"John Doe", age:33, favorites:{ sports:["hoops", "baseball"], movies:["star wars", "taxi driver"]  }}';

var jsonStr = strObj.replace(/(\w+:)|(\w+ :)/g, function(s) {
  return '"' + s.substring(0, s.length-1) + '":';
});

var obj = JSON.parse(jsonStr);
console.log(obj.favorites.movies[0]); // expected output: star wars


답변

String을 Object로 변환하려면 JSON.parse ()를 사용해야합니다.

var obj = JSON.parse('{ "firstName":"name1", "lastName": "last1" }');