Как поместить объект Array в JSON? - PullRequest
0 голосов
/ 13 апреля 2011

Я написал следующий код Javascript.Это лучшее, что я могу сделать, чтобы мои данные были отформатированы как допустимые JSON:

var roles = getSelectedRoles(); // returns an Array object

/* TODO: Find a better way to get the roles into my JSON data */
var rolesString = '["' + roles[0] + '"';
if (roles.length > 1)
    for (var i = 1; i < roles.length; i++)
        rolesString += ',"' + roles[i] + '"';
rolesString += ']';                        

var lid = $('#lid').val();

var json = '{ "id": "' + lid + '", "roles":' + rolesString + '}';

Как вы можете видеть, я строю свой JSON с циклическим объединением строк через мой объект Array.Это так ужасно, и кажется, что должен быть чистый способ вставить мои данные массива в мой JSON.

Ответы [ 4 ]

1 голос
/ 13 апреля 2011

Если это просто вставка объекта массива в другой объект, то:

var selRoles = getSelectedRoles(); 
var lid = $('#lid').val();  
var json = {
 id:lid ,
 roles: selRoles
};

Если вам нужно, чтобы весь объект был представлен в виде строки, вы можете использовать JSON2.js Дугласа Крокфорда, чтобы добиться того же.

Включите файл js, упомянутый выше, на свою страницу, и затем вы используете:

var jsonString = JSON.stringify(json) //json is from previous code.
0 голосов
/ 13 апреля 2011

Современные браузеры предлагают тип объекта JSON, который может сделать подобные вещи тривиальными (JSON.stringify (obj)) .. см., Например, здесь

0 голосов
/ 13 апреля 2011

Вы можете использовать функцию соединения массива ваших ролей:

var rolesString = '["' + roles.join('", "') + '"]';
0 голосов
/ 13 апреля 2011

Можете ли вы попробовать:

<script type="text/javascript">
var jsonObj = {
    id: lid,//$('#lid').val()
    roles:roles // getSelectedRoles()
}
var jsonStr = json_encode(jsonObj);
</script>

Вы можете найти функцию: json_encode здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...