Как я могу динамически преобразовать объект json следующим образом я должен
{ eligible: true, qualified:true }
но мне нужно сделать так
eligible= true, qualified=true
Что вы пытались сделать для этого? Является ли вывод строкой?
@CertainPerformance извините, пробел не преднамеренный
Почему бы вам не использовать REGEX?
ожидаемый вывод - строка?
@void я пытаюсь добиться этого, чтобы войти в наши панели мониторинга splunk, которые будут принимать только этот формат
Это либо объект, либо строка/текст в формате JSON. Нет такого понятия, как «объект JSON». Вы можете использовать Object.keys(myObj)
, чтобы получить массив ключей, а затем использовать .map
, чтобы создать новый массив. Есть еще .join()
.
@MukeshPrajapati: да, мы можем использовать регулярное выражение, но у меня его нет под рукой
Ваш JSON недействителен - ключи должны быть заключены в "
s, лучше это исправить, а затем вы можете превратить его в объект с помощью JSON.parse
@ChrisG, не могли бы вы помочь мне с этим jsfiddle или кодом?
Пожалуйста, изучите разница между JSON и литеральной нотацией объекта.
Тебя дважды накормили с ложки, зачем тебе рабочий пример сверху?
Вы можете получить записи объекта и изменить key/value
на строку, используя reduce
let obj = { eligible: true, qualified:true }
let str = Object.entries(obj).reduce((op,[key,value],index,arr)=>{
op+= `${key}=${value}${index !== arr.length-1 ? ',' : ''} `
return op
},'')
console.info(str.trim())
Вы можете использовать Объект.записи, чтобы получить двумерный массив объектов, а затем использовать Array.prototype.map, чтобы соединить элемент массива (ключ, значение) с =
.
Наконец, присоединитесь к массиву с помощью ,
, чтобы получить ожидаемый результат.
var x = { eligible: true, qualified:true };
var newX = Object.entries(x).map(el => el.join(" = ")).join(", ");
console.info(newX);
Если мы можем предположить, что строка является допустимым объектом JSON (у вас отсутствуют кавычки), вы можете проанализировать строку как JSON, а затем использовать Object.entries
для получения пар ключ-значение, которые затем можно сопоставить и соединить с желаемой строкой вывода.
const jsonStr = '{ "eligible": true, "qualified":true }'
const jsonObj = JSON.parse(jsonStr)
console.info(Object.entries(jsonObj).map(e => e.join('=')).join(', '))
Является ли пробел перед первым
true
в ожидаемом выводе преднамеренным/обязательным?