0

jQuery または JavaScript でオブジェクトに変換したい文字列として保存されている名前と値のペアがあります。これがそのペアの例です。

{'auto':false, 'itemAWidth':20, 'itemBWidth':20, 'marginLeft':0, 'marginRight':0, 'maximumWidth':0, 'propW':5, 'propX':5, ' propY':null, 'propZ':null}

これは文字列として保存されています。これを適切なオブジェクトに変換するにはどうすればよいですか? 私の失敗した試みのいくつかを以下に示します。

convertValuePairsToObject = function (pairs) {

  var outObject = {};
  var nodes = pairs.split(',');
  for (var node in nodes) {

  }

  //alert(pairs);
  //return jQuery.parseJSON('"' + pairs + '"');
  //      var outObject = {};
  //      //var nodes = pairs.split(','), dest = outObject;
  //      var  = pairs.split(',');
  //      return outObject;
}

jQuery.parseJSON() 関数を使用しようとすると、コードは次のように始まる非常に長い文字列を返しました。

{'0':'{', '1':''', '2':'0', '3':''', '4':':', '5':''', ' 6':'{', '7':''', '8':',', '9':' ', '10':''', '11':'1', '12': ''', '13':':', '14':''', '15':''', '16':''', '17':',', '18':''' , '19':''', '20':'2', '21':''', '22':':', '23':''', '24':'a', ' 25':''', '26':',', '27':'', '28':''', '29':'3', '30':''','31':':', '32':''', '33':'u', '34':''', '35':',', '36':' ', '37' :''', '38':'4', '39':''', '40':':', '41':''', '42':'t', '43':' '', '44':',', '45':' ', '46':''', '47':'5', '48':''', '49':':', '50':''', '51':'o',41':''', '42':'t', '43':''', '44':',', '45':'', '46':''', '47': '5', '48':''', '49':':', '50':''', '51':'o',41':''', '42':'t', '43':''', '44':',', '45':'', '46':''', '47': '5', '48':''', '49':':', '50':''', '51':'o',

=====================================

以下を編集 10:51 AM 1/4/2013

=====================================

だから私はあなたが提供した提案を試してみました。

  convertObjectToString = function (obj) {
      return JSON.stringify(obj);
      //      var str = '';
      //      for (var p in obj) {
      //         if (obj.hasOwnProperty(p)) { str += "'" + p + "':" + formatValue(obj[p]) + ", "; }
      //      }
      //      if (str.length > 0) {
      //         str = String(str).substring(0, str.length - 2); // Trim trailing comma
      //         str = '{' + str + '}';
      //      }
      //      return str;
   }

   convertValuePairsToObject = function (pairs) {
      return jQuery.parseJSON('[' + pairs + ']');
   }

しかし、convertValuePairsToObject が実行されると、コードは名前と値のペアを前に追加します。

{"0":

そして、その関数を繰り返しトリガーすると、次のように、上記が文字列の前に保留され続けます。

{"0":{"0":{"0":

ゼロのインデックス識別子は必要ありません。どうすればそれをなくすことができますか?

4

2 に答える 2

3

一重引用符を二重引用符に置き換える必要があります。

var json = "{'auto':false, 'itemAWidth':20, 'itemBWidth':20, 'marginLeft':0, 'marginRight':0, 'maximumWidth':0, 'propW':5, 'propX':5, 'propY':null, 'propZ':null}".replace(/'/g, '"')

次に、次を使用できますJSON.parse

JSON.parse(json)
于 2013-01-14T16:50:46.917 に答える
0

次のような文字列を取得することを意味すると仮定します。

"{'auto':false, 'itemAWidth':20, 'itemBWidth':20, 'marginLeft':0, 'marginRight':0, 'maximumWidth':0, 'propW':5, 'propX':5, 'propY':null, 'propZ':null}"

次に、1つのオプションは次のように使用することevalです:

var pairs = "{'auto':false, 'itemAWidth':20, 'itemBWidth':20, 'marginLeft':0, 'marginRight':0, 'maximumWidth':0, 'propW':5, 'propX':5, 'propY':null, 'propZ':null}"

var foo = eval("(" + pairs + ")");

foo文字列ではなく、実際のオブジェクトになりました。

実行console.log(foo);すると、デバッガーのオブジェクト ツリーは文字列ではなくなります。


DEMO - 文字列からオブジェクトを取得する


または、文字列内のオブジェクトを適切な JSON オブジェクトに変換してから、JSON.Parse他の人が述べたように使用してオブジェクトに戻すこともできます。

于 2013-01-14T16:51:11.393 に答える