在剃刀视图中解析Json

时间:2016-07-24 13:40:50

标签: jquery asp.net-mvc razor

我想解析JSON。我使用下面的代码来解析JSON

var sr = @Html.Raw(Json.Encode(Model.CanvasJsonData));  

此处CanvasJsonData的类型为string,并包含以下JSON字符串:

{  
   "client":{  
      "instanceId":"_:GPAT_Connect:18:2;a:canvasapp",
      "targetOrigin":"https://gcpaexp--gcpdev3q1.cs13.my.salesforce.com",
      "instanceUrl":"https://gcpaexp--GCPDEV3Q1.cs13.my.salesforce.com",
      "oauthToken":"00DW0000008sVOh!AR8AQLlBiYZZ0iJHv6xBOMSppnBkO_g0Vlug2072sPQ.JkgtRNpQh7zF0Qym7oDOQn1c3qhAmRAJ6VWr55zdpCDYp1WD_EI4"
   }
}

我正确地解析Json吗?我需要做这个mvc razor视图。

现在,我的问题是sr.clientundefined

 var sr = @Html.Raw(Json.Encode(Model.CanvasJsonData));           
             Sfdc.canvas(function() {
                Sfdc.canvas.client.publish(sr.client, {
                name: 'mybox.sendVal', payload: { value : 'request created'} });
            }) () ;

1 个答案:

答案 0 :(得分:0)

由于CanvasJsonDatastring(而非object),因此您需要使用JSON.parse将字符串解析为JSON。

假设你的模型属性是

model.CanvasJsonData = "{\"client\":{\"instanceId\":\"_:GPAT_Connect:18:2;a:canvasapp\",\"targetOrigin\":\"https://gcpaexp ...... }"

然后在剧本中

var sr = JSON.parse(@Html.Raw(Json.Encode(Model.CanvasJsonData))); // returns Object {client: Object}
console.log(sr.client.instanceId); // returns '_:GPAT_Connect:18:2;a:canvasapp'

或者,CanvasJsonData应该是包含属性client的对象,其中包含属性instanceIdtargetOrigin