2016-06-28 3 views
-4

У меня есть некоторые JSON с двумя параметрами выражаетсяПреобразование JSON в используемый объект в Javascript

{"pushid":"35336165333161382d646338302d346665302d626236312d303763313435663036656131","count":1} 

Я пытаюсь получить доступ к «pushid» и «графа» в качестве используемых элементов, либо в объект, массив или карту, и я немного запутался относительно того, как это сделать.

Когда я вызываю JSON.parse (json), он возвращает undefined, и поэтому я предполагаю, что это уже объект. Однако, когда я пытаюсь использовать JSON [1] возвращает второй символ целой вещи (что в данном случае «). Как сделать объект

var obj = {pushId: SOME_STRING, count: SOME_INT)? 

Спасибо заранее,

+2

Выразить полный код , 'JSON.parse ({a:" a "})' дает вам '{a:" a "}', а не 'undefined'. –

+0

Он должен быть объектом в экземпляре, как если бы вы задали 'var data = yourJsonString;' и когда вы 'console.log (data) => object' или' console.log (data.count) => 1', и вы cant использовать json [1] для объекта, так как 1 не является ключом, если данные являются полной строкой '{"key": "value"}' json [1] вернет ", так как его второй char –

+1

I не может воспроизвести описанную вами проблему: http://jsbin.com/cixesog/1/edit?js,console – Quentin

ответ

2

Принимая во внимание:

var jsonString = '{"pushid":"35336165333161382d646338302d346665302d626236312d303763313435663036656131","count":1}'; 

вы можете сделать:.

var jsonObj = JSON.parse(jsonString); 
console.log(jsonObj.pushid); // 3533... 
console.log(jsonObj['pushid']); // 3533... 
console.log(jsonObj.count); // 1 
console.log(jsonObj['count']); // 1 
console.log(jsonObj[0]); // undefined 
console.log(jsonObj[1]); // undefined 
+0

Вы имеете в виду, что OP уже сказал, что они делали в вопросе? – Quentin

+1

@Quentin вы здесь все время. Что вы делаете для жизни: P –

+0

@Quentin Проверьте обновленный ответ. Он работает для меня в Chrome. –

1

Это уже объект, поэтому вам не придется разобрать его {» pushid ":" 35336165333161382d646338302d346665302d626236312d303763313435663036656131 "," count ": 1}

Все, что вам нужно сделать, это присвоить его той переменной, которую вы хотите.

let data = {"pushid":"35336165333161382d646338302d346665302d626236312d303763313435663036656131","count":1}; 

console.log("pushid : " + data["pushid"]); 
pushid : 35336165333161382d646338302d346665302d626236312d303763313435663036656131 

console.log("count : " + data["count"]); 
count : 1 
0

Я имею в виду, что число слишком велико для JS, чтобы представить в этом 64 бит с плавающей точкой внутреннее представление, но вы можете попытаться разобрать base16 магнезию с

parseInt(obj.pushid, 16);

+0

это альфа numeric – inoabrian

+0

Вопрос задает вопрос о разборе JSON, а не о преобразовании строкового значения одного из свойств объекта в число – Quentin

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