Получить JSON из выбранного узла (значение href) в виде дерева - PullRequest
1 голос
/ 06 декабря 2011

Я заполняю древовидную структуру объектом, содержащим идентификатор и его значение, поэтому оно выглядит следующим образом:

var serializer = new JavaScriptSerializer();
var rslt = serializer.Serialize(new {
        Id = node.Id.ToString(),
        impactLength = node.impactLenght.ToString()
        });
TreeNode newNode = new TreeNode(node.Name, rslt);

У меня проблема с получением объекта из ссылок href каждого узла:

Вот несколько примеров hrefs:

1.Root

javascript:__doPostBack('ctl00$ContentPlaceHolder1$treeViewActions','s{\"Id\":\"0\",\"impactLength\":\"1\"}')

2.Ice's Descendant

javascript:__doPostBack('ctl00$ContentPlaceHolder1$treeViewActions','s{\"Id\":\"0\",\"impactLength\":\"1\"}\\{\"Id\":\"2\",\"impactLength\":\"1\"}')

Я успешно получил приведенный выше href иполучить только строковую часть объекта

{"Id":"0","impactLength":"1"}{"Id":"2","impactLength":"1"}{"Id":"7","impactLength":"1"} 

, но когда я пытаюсь разобрать его с jQuery.parseJSON , я получаю исключение: " Uncaught SyntaxError: Неожиданный токен { "

Что я делаю не так?

спасибо, Эдди

1 Ответ

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

Чтобы обработать их все сразу, вам нужно встроить их в нотацию Array JSON.

'[{"Id":"0","impactLength":"1"},{"Id":"2","impactLength":"1"},{"Id":"7","impactLength":"1"}]'

Как таковая, это недопустимая разметка JSON.Вы действительно должны отправлять данные с сервера в формате JSON.


Если вы не можете изменить их на стороне сервера, вы можете попробовать это, но без гарантий:

   // assuming you have the part that you extracted stored in my_str...
var my_str = '{"Id":"0","impactLength":"1"}{"Id":"2","impactLength":"1"}{"Id":"7","impactLength":"1"}'

   // ...try this
var new_str = '[' + my_str.split( '}\\{' ).join( '},{' ) + ']';
var result = jQuery.parseJSON( new_str );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...