簡體   English   中英

為什么 JSON output 中的某些字段缺少引號以及為什么 output 中沒有雙引號

[英]Why are some fields in JSON output missing quotes and why no double quotes in output

下面是vs代碼終端output的截圖。 JSON output 對帶有紅色箭頭的 3 個字段的處理方式與其他字段不同。 該字符串在 easch 項目周圍有雙引號,但 tje JSOn.parse output 有單引號'出於測試目的,代碼設置為處理 1 個列表。

在此處輸入圖像描述

這是代碼

 const request = require('request-promise'); const cheerio = require('cheerio'); const fs = require('fs'); const { JSDOM } = require("jsdom"); fs.readFile('./data/hb2019.html', 'utf-8', (err, data) => { if (err) { console.log(err); return; } const dom = new JSDOM(data); fieldName = []; fieldName = [...dom.window.document.querySelectorAll('#tableComparableSales >tbody.salesReportSortLink')] //file may artificially have multiple pages var listings = [];// array of raw listing links listings = dom.window.document.querySelectorAll('[id^=tdSales]'); //var output = '['; var output = ''; (function () { field = []; //console.log(listings.length) var numListings = 1;//28 var cleanedField; for (var i = 0; i < numListings; i++) { output = output + '{'; for (var j = 1; j < 16; j++) { field[i] = dom.window.document.querySelector(`#tdSales${i + 1}>td:nth-child(${j})`); //some fields have quotes in them ie> Financial inst or "In Lieu of Forclosure" stated" cleanedField = field[i].textContent.trim().replace(/\"/g, ""); output = output + `"${fieldName[j - 1].textContent.trim()}":"${cleanedField}"`; output = output.replace(/\s+/g, ' '); // don't output last comma if (j < 15) { output = `${output},`; }; }; // don't output last comma if (i < numListings - 1) { output = output + '},'; } else { output = output + '}'; } } //output = output + ']'; output = output.replace(/\s+/g, ' '); console.log(output); var obj = JSON.parse(output); console.log(obj); })(); });

這一行似乎有問題"${fieldName[j - 1].textContent.trim()}":"${cleanedField}" 由於它是模板文字,因此不需要"

不是以不同的方式對待它們,而是以不同的方式展示它們。

只要鍵包含在 Javascript 變量名稱中無效的字符,例如空格或# ,它就會使用引號。

與您可以在 Javascript obj.var1obj['var1']中編寫但您不能編寫obj.var2%的方式相同,您必須編寫obj['var2%']

順便說一句,這個 output 是 javascript object 的文本表示,但它不是Z0ECD11C1D7A3BB87401D8148A2。 在 JSON 中,所有 object 鍵和字符串都用雙引號括" 。上面的行正確的 JSON。

問題是我正在從 vsCode 終端復制 output 字符串並將 i 粘貼到驗證器中(作為純文本)顯然引入了換行符。 所以我將字符串保存到一個文件中,然后將文件上傳到 json 驗證器,它驗證得很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM