Quiero crear una cadena JSON desde un javascript para el bucle. Esto es lo que he intentado hacer (que me da algo que se parece a una cadena JSON), pero no funciona.

var edited = "";
for(var i=1;i<POST.length-1;i++) {
    edited += '"'+POST[i].name+'":"'+POST[i].value+'",';
}

Me da esto:

"type":"empty","name":"email-address","realname":"Email Address","status":"empty","min":"empty","max":"empty","dependson":"empty",

Esto no funciona si puedo tratar de convertirlo en un objeto JSON más tarde.

  • ¿cuál es tu resultado esperado??
  • Este fue mi resultado esperado: {«type»:»empty»,»name»:»empty»,»realname»:»empty»,»status»:»empty»,»min»:»empty»,»max»:»empty»,»dependson»:»empty»,»matches»:»empty»}. Problema resuelto
InformationsquelleAutor Sthe | 2011-08-08

4 Comentarios

  1. 6

    Dos problemas:

    • Desea un objeto, por lo que la cadena JSON tiene que empezar con { y final con }.
    • Hay un final , que pueden ser reconocidos como válidos.

    Es probablemente mejor usar una biblioteca, pero para corregir el código:

    • Cambio var edited = ""; a var edited = "{"; para iniciar su cadena JSON con un {
    • Agregar edited = edited.slice(0, -1); después de que el bucle for para quitar el punto y coma final.
    • Agregar edited += "}"; después de la instrucción anterior para poner fin a su cadena JSON con un }

    Su código final sería:

    var edited = "{";
    for(var i=1;i<POST.length-1;i++) {
        edited += '"'+POST[i].name+'":"'+POST[i].value+'",';
    }
    edited = edited.slice(0, -1);
    edited += "}";

    De nuevo, es mejor usar una biblioteca (por ejemplo,JSON.stringify) por la fabricación de un objeto con un bucle for, agregar propiedades mediante POST[i].name como una clave y POST[i].value como el valor, entonces el uso de la biblioteca para convertir el objeto en JSON.

    También, se comienza con el índice de 1 y terminando con el índice de POST.length-2, por tanto se excluyen los índices de 0 (el primer valor) y POST.length-1 (el último valor). Es que lo que realmente quiero?

    • Gracias funcionó 🙂
  2. 4
    //dummy data
    var post=[{name:'name1',value:1},{name:'name2',value:2}];
    
    var json=[];
    for(var i=0;i<post.length;i++)
    {
        var temp={};
        temp[post[i].name]=post[i].value;
       json.push(temp);
    }
    
    var stringJson = JSON.stringify(json);
    
    
    alert(stringJson );

    http://jsfiddle.net/3mYux/

    • Gracias. Me estoy poniendo un error en json.push({POST[i].name:POST[i].value});. Es decir Inesperada Identificador.
    • editado mi respuesta y creado una demo para usted!!
  3. 0

    Tiene coma extra en su cadena JSON. Cadena JSON formato: {«JSON»: «Hola, Mundo»}

    var edited = "{";
    for(var i=1;i<POST.length-1;i++) {
        edited += '"'+POST[i].name+'":"'+POST[i].value+'",';
    }
    //remove last comma:
    edited = edited.substring(0, edited.length-1) + "}";
  4. 0

    No puedes simplemente crear un hash y hacer toString en el hash? Algo como esto:

    var edited = {};
    for(var i=0;i<POST.length-1;i++) {    
        edited[POST[i].name] = POST[i].value;
    }

    O tal vez JSON.stringify es lo que usted está buscando: http://www.json.org/js.html

Dejar respuesta

Please enter your comment!
Please enter your name here