【问题标题】:Get certain properties from large json object从大型 json 对象中获取某些属性
【发布时间】:2017-09-25 18:46:18
【问题描述】:

我收到一个巨大的 json 对象,我只需要从中获取两个属性。

json是这样来的

"{\r\n\"d\" : [\r\n{\r\n\"__metadata\": {\r\n\"uri\": \"http:\/\/xx.xx.xx\/AciApi.svc\/Port_Domestic(1191)\", \"type\": \"ACIModel.Port_Domestic\"\r\n}, \"PortID\": 1191, \"PortName\": \"PORTLAND\"\r\n}, {\r\n\"__metadata\": {\r\n\"uri\": \"http:\/\/xx.xx.xx\/AciApi.svc\/Port_Domestic(1192)\", \"type\": \"ACIModel.Port_Domestic\"\r\n}, \"PortID\": 1192, \"PortName\": \"BANGOR\"\r\n}, {\r\n\"__metadata\": {\r\n\"uri\": \"http:\/\/xx.xx.xx\/AciApi.svc\/Port_Domestic(1193)\", \"type\": \"ACIModel.Port_Domestic\"\r\n}, \"PortID\": 1193, \"PortName\": \"LUBEC\"\r\n}, {\r\n\"__metadata\": {\r\n\"uri\":....

我只需要 PortName 和 PortID 就可以了

0:{portCode:"",portName:""},
1:{portCode:"",portName:""},
...

【问题讨论】:

    标签: angularjs json object


    【解决方案1】:

    var jsonString = "{\r\n\"d\" : [\r\n{\r\n\"__metadata\": {\r\n\"uri\": \"http:\/\/xx.xx.xx\/AciApi.svc\/Port_Domestic(1191)\", \"type\": \"ACIModel.Port_Domestic\"\r\n}, \"PortID\": 1191, \"PortName\": \"PORTLAND\"\r\n}, {\r\n\"__metadata\": {\r\n\"uri\": \"http:\/\/xx.xx.xx\/AciApi.svc\/Port_Domestic(1192)\", \"type\": \"ACIModel.Port_Domestic\"\r\n}, \"PortID\": 1192, \"PortName\": \"BANGOR\"\r\n}, {\r\n\"__metadata\": {\r\n\"uri\": \"http:\/\/xx.xx.xx\/AciApi.svc\/Port_Domestic(1193)\", \"type\": \"ACIModel.Port_Domestic\"\r\n}, \"PortID\": 1193, \"PortName\": \"LUBEC\"\r\n}]}"
    
    var jsonArray = JSON.parse(jsonString).d;
    
    var arrayOfObjectsWithOnlyThose2Properties = jsonArray.map(function(item){ 
       return {
         "portCode": item.PortCode,
         "portName": item.PortName
       }
    });
        
    console.log(arrayOfObjectsWithOnlyThose2Properties);

    【讨论】:

    • 这给我带来了这个错误 SyntaxError: Unexpected token ' in JSON at position 11576 at JSON.parse () 你知道为什么吗?
    • 此时我们必须看到您的完整 json 字符串,帖子中的字符串并没有那么长。
    • 完整的json在script.js中here@Dan_D
    • 看起来您的字符串在 javascript 中的格式不正确,您可以使用单引号或双引号来标识字符串。在您的情况下,加倍,但 INT'L 被转义为 INT\\'L 导致无效字符串。如果您无法控制输出,则必须将 \\' 的所有实例替换为 '
    • 你是怎么做到的? @dan-d
    猜你喜欢
    • 1970-01-01
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 2016-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多