2014-02-02 1 views
0

Я пытаюсь вернуть действительный объект JSON из строки, которая содержит значения из формы, однако с использованием JavaScript JSON.parse возвращает массив значений char, а не объект JSON. Ниже мой код:Преобразование строки в действительный объект json

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Select Browser Options</title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <script src='https://code.jquery.com/jquery-2.0.3.js'></script> 
    </head> 
    <body style="width: 640px;height: 480px;"> 
    <div id="hiddenX" style="display:none;"></div> 
    <div id="hiddenY" style="display:none;"></div> 
    <div id="searchPrefs"> 
     <form id="searchPreferences"> 
     <div id="searchWrapper"> 
      <input class="id" type="text" name="id" value="googleSearch"> 
      <input class="label" type="text" name="label" value="Google Search"> 
      <input class="iconURL" type="text" name="iconURL" value="https://www.google.com/favicon.ico"> 
      <input class="tabURL" type="text" name="tabURL" value="https://www.google.com/search?q="> 
      <br></br> 
      <input class="id" type="text" name="id" value="googleMapSearch"> 
      <input class="label" type="text" name="label" value="Google Maps"> 
      <input class="iconURL" type="text" name="iconURL" value="https://maps.gstatic.com/favicon3.ico"> 
      <input class="tabURL" type="text" name="tabURL" value="https://www.google.com/maps/preview/search/"> 
      <br></br> 
      <input class="id" type="text" name="id" value="ddgSearch"> 
      <input class="label" type="text" name="label" value="Duck Duck Go Search"> 
      <input class="iconURL" type="text" name="iconURL" value="https://duckduckgo.com/favicon.ico"> 
      <input class="tabURL" type="text" name="tabURL" value="https://duckduckgo.com/?q="> 
      <br></br> 
      <input class="id" type="text" name="id" value="imageSearch"> 
      <input class="label" type="text" name="label" value="Google Image Search"> 
      <input class="iconURL" type="text" name="iconURL" value="data:image/gif;base64,R0lGODlh…GbsuF0PHJq9WipnYJB9/UmFyIAOw=="> 
      <input class="tabURL" type="text" name="tabURL" value="https://www.google.com/search?tbm=isch&q="> 
      <br></br> 
      <input class="id" type="text" name="id" value="bingSearch"> 
      <input class="label" type="text" name="label" value="Bing Search"> 
      <input class="iconURL" type="text" name="iconURL" value="http://bing.com/favicon.ico"> 
      <input class="tabURL" type="text" name="tabURL" value="http://www.bing.com/search?q="> 
      <br></br> 
      <input class="id" type="text" name="id" value="thesaurusSearch"> 
      <input class="label" type="text" name="label" value="Thesaurus Search"> 
      <input class="iconURL" type="text" name="iconURL" value="http://static.sfdict.com/thescloud/favicon.ico"> 
      <input class="tabURL" type="text" name="tabURL" value="http://thesaurus.com/browse/"> 
      <br></br> 
      <input class="id" type="text" name="id" value="wikipediaSearch"> 
      <input class="label" type="text" name="label" value="Wikipedia Search"> 
      <input class="iconURL" type="text" name="iconURL" value="https://bits.wikimedia.org/favicon/wikipedia.ico"> 
      <input class="tabURL" type="text" name="tabURL" value="https://en.wikipedia.org/w/index.php?search="> 
      <br></br> 
      <input class="id" type="text" name="id" value="wiktionarySearch"> 
      <input class="label" type="text" name="label" value="Wiktionary Search"> 
      <input class="iconURL" type="text" name="iconURL" value="https://bits.wikimedia.org/favicon/wiktionary/en.ico"> 
      <input class="tabURL" type="text" name="tabURL" value="https://en.wiktionary.org/w/index.php?search="> 
      <br></br> 
     </div> 
     <a id="more" href="#"></a> 
     <br></br> 
     <input id="save" type="submit" value="save" name="save"> 
     </form> 
     <div id="output"></div> 
     <script> 
     $('#searchPreferences').submit(function(event) { 
      var justValues = "["; 
      var formJson = $('#searchPreferences').serializeArray(); 
      var lastKey = $("input").length - 2; 
      $.each(formJson, function(i, field) { 
      if (field.name === "id") { 
       justValues += '{"' + field.name + '":"' + field.value + '",'; 
      } else if (field.name === "tabURL" && i === lastKey) { 
       justValues += '"' + field.name + '":"' + field.value + '"}'; 
      } else if (field.name === "tabURL") { 
       justValues += '"' + field.name + '":"' + field.value + '"},'; 
      } else { 
       justValues += '"' + field.name + '":"' + field.value + '",'; 
      } 
      }); 
      justValues += "]"; 
      JSON.parse(justValues); 
      for(var o in justValues){ 
      console.log(o+':'+justValues[o]); 
      } 
      console.log(justValues); 
      event.preventDefault(); 
     }); 
     </script> 
    </div> 
    </body> 
</html> 

и здесь является console.log выход:

... 
1210:? 
1211:s 
1212:e 
1213:a 
1214:r 
1215:c 
1216:h 
1217:= 
1218:" 
1219:} 
1220:] 
[{"id":"googleSearch","label":"Google Search","iconURL":"https://www.google.com/favicon.ico","tabURL":"https://www.google.com/search?q="},{"id":"googleMapSearch","label":"Google Maps","iconURL":"https://maps.gstatic.com/favicon3.ico","tabURL":"https://www.google.com/maps/preview/search/"},{"id":"ddgSearch","label":"Duck Duck Go Search","iconURL":"https://duckduckgo.com/favicon.ico","tabURL":"https://duckduckgo.com/?q="},{"id":"imageSearch","label":"Google Image Search","iconURL":"data:image/gif;base64,R0lGODlh…GbsuF0PHJq9WipnYJB9/UmFyIAOw==","tabURL":"https://www.google.com/search?tbm=isch&q="},{"id":"bingSearch","label":"Bing Search","iconURL":"http://bing.com/favicon.ico","tabURL":"http://www.bing.com/search?q="},{"id":"thesaurusSearch","label":"Thesaurus Search","iconURL":"http://static.sfdict.com/thescloud/favicon.ico","tabURL":"http://thesaurus.com/browse/"},{"id":"wikipediaSearch","label":"Wikipedia Search","iconURL":"https://bits.wikimedia.org/favicon/wikipedia.ico","tabURL":"https://en.wikipedia.org/w/index.php?search="},{"id":"wiktionarySearch","label":"Wiktionary Search","iconURL":"https://bits.wikimedia.org/favicon/wiktionary/en.ico","tabURL":"https://en.wiktionary.org/w/index.php?search="}] 
+0

Возможный дубликат [Сериализация в JSON в jQuery] (http://stackoverflow.com/questions/191881/serializing-to-json-in-jquery) – sdespont

ответ

2

Похоже, вы ничего с возвращаемым значением JSON.parse не делает. Я думаю, что вы хотите сделать.

justValues = JSON.parse(justValues); 

Это должно заставить его работать. Однако это косвенный способ получить то, что вам нужно. Если вы хотите создать объект JavaScript, почему бы просто не построить этот объект напрямую? Вместо того, чтобы строить строку JSON, а затем разбирать ее в объект.

+0

Duh, конечно! Я провел несколько часов, ломая мозг, почему он не возвращал то, что я хотел, мне просто нужен свежий взгляд. Благодаря! – SomeoneElse

 Смежные вопросы

  • Нет связанных вопросов^_^