2011-12-06 8 views
1

で選択されたノード(hrefの値)からJSONを取得:それは次のようになりますので、私は、idとその値を含むオブジェクトをツリービューを埋めるツリービュー

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

I "mはそのオブジェクトを取得し、問題を持ちますバック各ノードのhrefのリンクから:ここで

のhrefのいくつかの例は以下のとおりです。

1.Root

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

2.Itの末裔

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でそれを解析しようとすると、私は例外を取得: "キャッチされないSyntaxError:予期しないトークン{ "

何が間違っていますか?

おかげで、 エディ

答えて

1

が一度にすべてを処理するには、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); 
+0

すべての焦がすオブジェクトはそのレベルでのノードの値を表しているので、これは、可能ではありません。 最後のオブジェクトを検索する唯一の方法は、最初のhref文字列から切り取ることですか? –

+0

@EddieR:私が言っていることは、JSONメソッドを使って無効なJSONを解析できないということです。フォーマットをサーバー側で変更できない場合は、文字列操作を行って有効にすることができます。したがって、オブジェクトのグループがあり、オブジェクトに '\\'という区切り文字がある場合は、コンマでスワップすることができます。私は更新します。 – RightSaidFred

+0

あなたの答えは私を大いに助けました。 が分割されて '} \\ {'から '} {'に変更され、正常に動作しました。ありがとうございます! –

関連する問題