Выпуск разбора массивов в JSON - PullRequest
1 голос
/ 22 ноября 2011

Моя проблема: я пишу веб-приложение для управления контактами.На серверной стороне я работаю с Razor Syntax (C #) и отправляю запросы ajax на мой сервер со строкой в ​​кодировке json в качестве заголовка.Test.cshtml получает это следующим образом:

var j = Json.Decode(Request["json"]);

Теперь я могу прекрасно использовать все объекты.НО!У меня есть массив в строке, закодированной в json, такой как ...,"persons":[1,2,3],.... Код Json.Decode декодирует его, как и положено, в массив, который я могу использовать для записи данных в мою базу данных.После этого я хотел бы отправить обновленный объект обратно клиенту (массив не был изменен или что-либо еще сделано с помощью), используя:

<text>
    @Html.Raw(Json.Encode(j));
    @j.persons.Length;
</text>

и вывод элемента Person равен ...,"persons":{},..., но длина человека 3, как и должно быть.Что я делаю неправильно?Есть ли параметры, позволяющие Json.Encode кодировать подобъекты и массивы?

Спасибо за вашу поддержку

PS: @ j.persons.Length - это просто подтверждение того, что массивне пустой и существующий

Ответы [ 2 ]

1 голос
/ 08 декабря 2011

Я нашел проблему.Мне пришлось строго набрать автоматически сгенерированный массив (из Json.Decode) с циклом:

int[] temp = new int[j.persons.Length];
for(var i = 0;i < j.persons.Length;i++){
    temp[i] = (j.persons[i] is string)?Int32.Parse(j.persons[i]):(int)j.persons[i];
}
j.persons = temp;

Спасибо за ваш подход, Джозеф

0 голосов
/ 22 ноября 2011

, потому что это только кодирование корня, а не лиц, которые пытаются j.as_json(:include => :persons)

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