#javascript #node.js #json
#javascript #node.js #json
Вопрос:
В файле .json у меня есть следующее:
{
"WRATH OF THE C’TAN": {
"description": "The C’tan’s ever-burning rage at their enslavement is turned upon the enemy with cataclysmic results.",
"stratagem": "Use this Stratagem after a C’TAN SHARD from your army has resolved a Power of the C’tan. Roll a D6 to randomly select a Power of the C’tan from page 113. The C’tan Shard immediately uses the power rolled, even if it has already used that power this phase.",
"cost": 2,
"conditions": [
"factionkeywords"
],
"factionkeywords": [
"C'tan Shards"
]
}
}
Я читаю в файле JSON следующий код и запускаю его с помощью Node:
var fileContents = fs.readFileSync(path, "utf8").toString();
library = JSON.parse(fileContents);
Я повторяю массив factionkeywords, считанный из файла JSON, и сравниваю каждую строку (в данном случае одну, у некоторых других больше) с единицей, чтобы увидеть, содержит ли ее factionkeywords эту строку.
Проблема, с которой я сталкиваюсь, заключается в том, что строка в массиве factionkeywords экранирует апостроф. Когда я утешаю.регистрируйте объект, я получаю это:
{
description: 'The powers of the C’tan are myriad and terrifying. To battle a fragment of these shackled star gods is to find reality unbound.',
stratagem: 'Use this Stratagem at the start of your Movement phase. Select a C’TAN SHARD from your army. That model can replace one of its Powers of the C’tan with a different Power of the C’tan of your choice.',
cost: 1,
conditions: [ 'factionkeywords' ],
factionkeywords: [ 'C'tan Shards' ]
}
Я не понимаю, почему апостроф экранируется в строке массива, но не в строках описания или стратегии. В результате я не могу проверить, содержит ли блок эту строку, поскольку она не будет совпадать.
Я провел довольно много поисковых запросов в Google, но ничего не смог найти. Все, что приходит в голову, — это как добавить экранирование. Я хочу знать, почему он автоматически экранирует апострофы при импорте, но только в массиве, а не в других строках.
Заранее благодарю вас!
Комментарии:
1. сосредоточьтесь на одинарных кавычках. Они оба разные. Во factionkeywords это не апостроф, а одинарная кавычка, используемая как апостроф.
Ответ №1:
Escape добавлен, console.log
чтобы не путать апостроф с начальными и конечными одинарными кавычками, для которых он использует один и тот же символ. Он не существует в вашей строке. Попробуйте console.log(myobject.factionkeywords[0])
увидеть вашу строку такой, какая она есть на самом деле.
Причина, по которой экранирование не было выполнено description
, заключается в том, что у вас там нет того же символа. factionkeywords
содержит ‘АПОСТРОФ’ (U 0027), в то время description
как содержит ‘ПРАВУЮ ОДИНАРНУЮ КАВЫЧКУ’ (U 2019).
Комментарии:
1. Спасибо! Это решило мою проблему. Я не забуду следить за разными типами символов. Часть информации я скопировал / вставил, часть я ввел сам. Надеюсь, это поможет какой-нибудь другой бедной душе, такой как я.