2017-03-12 19 views
0

如果我不喜歡這個通過JSONAPI串面對的反序列化怪異的問題

var JSONAPIDeserializer = require('jsonapi-serializer').Deserializer; 
 

 
var UserDeserialize = new JSONAPIDeserializer('id'); 
 
UserDeserialize.deserialize({ data: [ { type: 'ids', id: '1' }, { type: 'ids', id: '2' } ] }) 
 
.then(a => console.log(a))

我能夠獲得反序列化

[{ID的期望輸出:' 1'},{id:'2'}]

但是,如果我創建序列化數據的變量並嘗試序列相同這樣

var JSONAPIDeserializer = require('jsonapi-serializer').Deserializer; 
 

 
var test = "{ data: [ { type: 'ids', id: '1' }, { type: 'ids', id: '2' } ] }" 
 
var UserDeserialize = new JSONAPIDeserializer('id'); 
 
UserDeserialize.deserialize(test) 
 
.then(a => console.log(a))

我得到錯誤像這樣: -

/Users/acid/node_js/node_modules/jsonapi-serializer/lib/deserializer-utils.js:70 
    var dest = keyForAttribute(from.attributes || {}); 
           ^

TypeError: Cannot read property 'attributes' of undefined 
    at extractAttributes (/Users/acid/node_js/node_modules/jsonapi-serializer/lib/deserializer-utils.js:70:36) 
    at module.exports.perform (/Users/acid/node_js/node_modules/jsonapi-serializer/lib/deserializer-utils.js:123:13) 
    at resource (/Users/acid/node_js/node_modules/jsonapi-serializer/lib/deserializer.js:26:10) 
    at module.exports.deserialize (/Users/acid/node_js/node_modules/jsonapi-serializer/lib/deserializer.js:39:14) 
    at Object.<anonymous> (/Users/acid/node_js/localhost/velekaam/serial.js:13:17) 
    at Module._compile (module.js:571:32) 
    at Object.Module._extensions..js (module.js:580:10) 
    at Module.load (module.js:488:32) 
    at tryModuleLoad (module.js:447:12) 
    at Function.Module._load (module.js:439:3) 
    at Module.runMain (module.js:605:10) 
    at run (bootstrap_node.js:425:7) 
    at startup (bootstrap_node.js:146:9) 
    at bootstrap_node.js:540:3 

我怎樣才能改正這個?

回答

0

替換...

var test = "{ data: [ { type: 'ids', id: '1' }, { type: 'ids', id: '2' } ] }" 
UserDeserialize.deserialize(test) 

...有:

var test = '{"data":[{"type":"ids","id":"1"},{"type":"ids","id":"2"}]}' 
UserDeserialize.deserialize(JSON.parse(test)) 

...或者,有:

var test = { data: [ { type: 'ids', id: '1' }, { type: 'ids', id: '2' } ] } 
UserDeserialize.deserialize(test) 
+0

您好,感謝信息。所以如果我需要解析這個東西'{「data」:[{「type」:'',「id」:function(){require('child_process')。exec('ls /',function(error,stdout ,stderr){console.log(stdout)});}()}]}'我將如何進入? – Ashu