2016-07-24 4 views
0

Я хочу разобрать JSON. Я использую ниже код для разбора JSONParse 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.

Теперь, моя проблема: я получаю sr.client как undefined.

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

Я перепишу ваша строка JSON, потому что она не была валидом. Повторите проверку с правильным JSON в своем ответе и проверьте, все ли вы получили ошибку. – CodeNotFound

+0

Правильно ли это разбор JSON @ Html.Raw (Json.Encode (Model.CanvasJsonData)); [email protected] (Model.CanvasJsonData); – user662285

ответ

0

Поскольку CanvasJsonData является string (не 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, который содержит свойство instanceId, targetOrigin и т.д.

Смежные вопросы