简体   繁体   English

如何正确使用 JSON.parse()? JSON 结果无效

[英]How to correctly use JSON.parse()? JSON result is not valid

When I use JSON.parse(myJSONString) the result is not a valid JSON file.当我使用 JSON.parse(myJSONString) 时,结果不是有效的 JSON 文件。 I'm in an nodejs environment.我在 nodejs 环境中。 Any Ideas what I can fix in my code?任何想法我可以在我的代码中修复什么? I user XML2JS to converte an XML Api call to JS.我使用 XML2JS 将 XML Api 调用转换为 JS。

I have printed out the results and already dived deeper into JSON.parse but didn't find further information...我已经打印出结果并且已经深入研究了 JSON.parse 但没有找到更多信息......

 exports.getStations = functions.https.onCall(async (data) => { let stations await axios.get(encodeURI(`XMLAPi`)) .then(async (response) => { parseString(response.data, (err, result) => { stations = JSON.stringify(result) console.log(stations) //First console.log }) }) .catch((error) => { console.log(error) }) console.log(JSON.parse(stations)) //Second console.log return JSON.parse(stations) })

Result for first console.log (valid JSON but String):第一个 console.log 的结果(有效的 JSON 但字符串):

{"itdRequest":{"$":{"xsi:noNamespaceSchemaLocation":"itd.xsd","language":"DE","sessionID":"EfaOpenServiceT_2882840828","client":"axios/0.19.0","serverID":"EfaOpenServiceT_","clientIP":"127.0.0.1","version":"10.3.5.46","virtDir":"static02","xmlns:xsi":"http://www.w3.org/2001/XMLSchema-instance"},"itdStopFinderRequest":{"$":{"requestID":"1"},"itdOdv":{"$":{"type":"any","usage":"sf","anyObjFilter":"42"},"itdOdvPlace":{"$":{"state":"empty"},"odvPlaceElem":""},"itdOdvName":{"$":{"state":"list"},"itdMessage":{"$":{"type":"error","module":"BROKER","code":"-8011"}},"odvNameElem":[{"_":"Mettmann, Stadtwald S","$":{"value":"0:1","selected":"1","listIndex":"0","streetName":"","omc":"5158024","placeID":"5","x":"6987248.99348","y":"51250980.94198","mapName":"WGS84","id":"20019083","anyType":"stop","anyTypeSort":"2","nameKey":"","locality":"Mettmann","postCode":"","objectName":"Stadtwald S","buildingName":"","buildingNumber":"","matchQuality":"235","stateless":"20019083"}},{"_":"Mettmann, ME-Zentrum S","$":{"value":"1:2","selected":"0","listIndex":"1","streetName":"","omc":"5158024","placeID":"5","x":"6979002.45917","y":"51249372.83702","mapName":"WGS84","id":"20019020","anyType":"stop","anyTypeSort":"2","nameKey":"","locality":"Mettmann","postCode":"","objectName":"ME-Zentrum S","buildingName":"","buildingNumber":"","matchQuality":"234","stateless":"20019020"}},{"_":"Mettmann, Neanderthal S","$":{"value":"2:3","selected":"0","listIndex":"2","streetName":"","omc":"5158024","placeID":"5","x":"6953346.57466","y":"51227837.93128","mapName":"WGS84","id":"20019191","anyType":"stop","anyTypeSort":"2","nameKey":"","locality":"Mettmann","postCode":"","objectName":"Neanderthal S","buildingName":"","buildingNumber":"","matchQuality":"234","stateless":"20019191"}}],"odvNameInput":"mettmann"},"genAttrList":{"genAttrElem":[{"name":"anyObjFilter","value":"STOP"},{"name":"anyObjFilter","value":"ADDRESS"},{"name":"anyObjFilter","value":"POI"}]}},"itdDateTime":{"$":{"ttpFrom":"20190601","ttpTo":"20191231"},"itdDate":{"$":{"day":"10","month":"8","year":"2019","weekday":"7"}},"itdTime":{"$":{"hour":"16","minute":"4"}}}}}}

Result for second console.log (invalid JSON after parse):第二个 console.log 的结果(解析后无效的 JSON):

Object {
  "data": Object {
    "itdRequest": Object {
      "$": Object {
        "client": "axios/0.19.0",
        "clientIP": "127.0.0.1",
        "language": "DE",
        "serverID": "EfaOpenServiceT_",
        "sessionID": "EfaOpenServiceT_2882840828",
        "version": "10.3.5.46",
        "virtDir": "static02",
        "xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
        "xsi:noNamespaceSchemaLocation": "itd.xsd",
      },
      "itdStopFinderRequest": Object {
        "$": Object {
          "requestID": "1",
        },
        "itdDateTime": Object {
          "$": Object {
            "ttpFrom": "20190601",
            "ttpTo": "20191231",
          },
          "itdDate": Object {
            "$": Object {
              "day": "10",
              "month": "8",
              "weekday": "7",
              "year": "2019",
            },
          },
          "itdTime": Object {
            "$": Object {
              "hour": "16",
              "minute": "4",
            },
          },
        },
        "itdOdv": Object {
          "$": Object {
            "anyObjFilter": "42",
            "type": "any",
            "usage": "sf",
          },
          "genAttrList": Object {
            "genAttrElem": Array [
              Object {
                "name": "anyObjFilter",
                "value": "STOP",
              },
              Object {
                "name": "anyObjFilter",
                "value": "ADDRESS",
              },
              Object {
                "name": "anyObjFilter",
                "value": "POI",
              },
            ],
          },
          "itdOdvName": Object {
            "$": Object {
              "state": "list",
            },
            "itdMessage": Object {
              "$": Object {
                "code": "-8011",
                "module": "BROKER",
                "type": "error",
              },
            },
            "odvNameElem": Array [
              Object {
                "$": Object {
                  "anyType": "stop",
                  "anyTypeSort": "2",
                  "buildingName": "",
                  "buildingNumber": "",
                  "id": "20019083",
                  "listIndex": "0",
                  "locality": "Mettmann",
                  "mapName": "WGS84",
                  "matchQuality": "235",
                  "nameKey": "",
                  "objectName": "Stadtwald S",
                  "omc": "5158024",
                  "placeID": "5",
                  "postCode": "",
                  "selected": "1",
                  "stateless": "20019083",
                  "streetName": "",
                  "value": "0:1",
                  "x": "6987248.99348",
                  "y": "51250980.94198",
                },
                "_": "Mettmann, Stadtwald S",
              },
              Object {
                "$": Object {
                  "anyType": "stop",
                  "anyTypeSort": "2",
                  "buildingName": "",
                  "buildingNumber": "",
                  "id": "20019020",
                  "listIndex": "1",
                  "locality": "Mettmann",
                  "mapName": "WGS84",
                  "matchQuality": "234",
                  "nameKey": "",
                  "objectName": "ME-Zentrum S",
                  "omc": "5158024",
                  "placeID": "5",
                  "postCode": "",
                  "selected": "0",
                  "stateless": "20019020",
                  "streetName": "",
                  "value": "1:2",
                  "x": "6979002.45917",
                  "y": "51249372.83702",
                },
                "_": "Mettmann, ME-Zentrum S",
              },
              Object {
                "$": Object {
                  "anyType": "stop",
                  "anyTypeSort": "2",
                  "buildingName": "",
                  "buildingNumber": "",
                  "id": "20019191",
                  "listIndex": "2",
                  "locality": "Mettmann",
                  "mapName": "WGS84",
                  "matchQuality": "234",
                  "nameKey": "",
                  "objectName": "Neanderthal S",
                  "omc": "5158024",
                  "placeID": "5",
                  "postCode": "",
                  "selected": "0",
                  "stateless": "20019191",
                  "streetName": "",
                  "value": "2:3",
                  "x": "6953346.57466",
                  "y": "51227837.93128",
                },
                "_": "Mettmann, Neanderthal S",
              },
            ],
            "odvNameInput": "mettmann",
          },
          "itdOdvPlace": Object {
            "$": Object {
              "state": "empty",
            },
            "odvPlaceElem": "",
          },
        },
      },
    },
  },
}

You are already converting to string as a parsestring function. 您已经在转换为字符串作为parsestring函数。 But it's also converting to JSON.stringify() . 但是它也正在转换为JSON.stringify()

You can try check this value 您可以尝试检查此值

let stations = await axios.get(encodeURI(`XMLAPi`));
console.log(JSON.stringify(stations.data)) // What is value??
JSON.parse('{"name":"huangxiaojian","age":"23"}')  ==>  Object {name: "huangxiaojian", age: "23"}

您需要注意引号,这很重要!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM