2016-10-11 3 views
1

Я это JSON строку, превратилась в объект Javascript, который на одном из его уровней возвращает что-то вроде этогоЧистый символ # из объекта Json в Javascript

"link": { 
      "#tail": "\n\n\t\t", 
      "#text": "http://static2.server.com/file.mp3" 
      }, 

мне нужно получить значение «текст» на Javascript, но символ «#» делает невозможным доступ к нему.

Я попытался очистки строку, как это:

var myJSONString = JSON.stringify(response); 
     var myEscapedJSONString = myJSONString.replace(/[^\u0000-\u007F]+/g, "").replace("#","t"); 

Но это не чистит «ключ» часть, даже после того, как он был включен в строку, используя stringify.

+2

Вы можете получить доступ к стоимости объекта в JavaScript даже с # в ключе. Просто используйте ссылку нотации ['# tail'] или ссылку ['# text'] вместо – nanndoj

+0

@nanndoj Я попробовал, но не работает на некоторых устройствах. Я использую этот код внутри приложения Ionic – Nick

ответ

0

Я не думаю, что проблема с # используется как ключ. Любая действительная строка может использоваться как ключ объекта. Но если вы действительно хотите удалить строки, вы можете заменить их с помощью регулярного выражения (предполагая хэш-символ только в начале каждого ключа);

const cleanObj = JSON.parse(JSON.stringify(response).replace(/\"#/gm,'"')) 
console.log(cleanObj.link.text); 

Я не мог найти любую проблему также доступа и очистки через JavaScript

var cleanObject = { link: {} }; 

Object.keys(response.link).map(function(key) { 
    cleanObject.link[key.substring(1)] = response.link[key]; 
}) 

Fiddle здесь: https://jsfiddle.net/p5cvvqzu/

+0

Большое спасибо, работал как шарм – Nick

0

Как насчет того, чтобы удалить # с, прежде чем использовать этот объект?

function stripHashes(obj) { 
    var strippedObj = {}; 
    Object.keys(obj).forEach(function(key) { 
     strippedObj[key.substr(1)] = link[key]; 
    }); 
    return strippedObj; 
} 

Это вернет новый объект с хэшами, снятыми с клавиш ввода.

+0

Примечание: это не рекурсивно, но поскольку ваши данные на примере только на одном уровне, я не беспокоился об этом. Если у вас есть вложенные объекты, вы можете адаптировать это. – RogerH

+0

На самом деле это разные уровни, я попытаюсь адаптировать его, и я дам вам знать. – Nick

Смежные вопросы