简体   繁体   English

如何正确使用 JSON.parse?

[英]How to properly use JSON.parse?

I'm receiving a string with php and then parsing it:我收到一个带有 php 的字符串,然后解析它:

String saved in db:保存在数据库中的字符串:

{"totale_casi":825,"terapia_intensiva":24,"ricoverati_con_sintomi":122,"totale_ospedalizzati":146,"isolamento_domiciliare":598,"totale_positivi":744,"dimessi_guariti":40,"deceduti":41,"tamponi":6477}, {"totale_casi"235,"terapia_intensiva":123,"ricoverati_con_sintomi":154,"totale_ospedalizzati":344,"isolamento_domiciliare":654,"totale_positivi":786,"dimessi_guariti":988,"deceduti":675,"tamponi":2324}

Then I do然后我做

var myJson = '<?php echo $dataCustom; ?>';

This is how It prints on js这就是它在js上打印的方式

var myJson = '{"totale_casi":825,"terapia_intensiva":24,"ricoverati_con_sintomi":122,"totale_ospedalizzati":146,"isolamento_domiciliare":598,"totale_positivi":744,"dimessi_guariti":40,"deceduti":41,"tamponi":6477}, {"totale_casi"235,"terapia_intensiva":123,"ricoverati_con_sintomi":154,"totale_ospedalizzati":344,"isolamento_domiciliare":654,"totale_positivi":786,"dimessi_guariti":988,"deceduti":675,"tamponi":2324}';

How to read a property?如何读取属性?

Tried试过了

var myJson = '<?php echo $dataCustom; ?>';
var customJsonData = JSON.parse(myJson);

I am trying to:我在尝试着:

for(var d = 0; d < customJsonData.length; ++d) {
  console.log(customJsonData[d]totale_positivi);
}

UPDATE更新

This is how I am constructing the json这就是我构建 json 的方式

var saveJsondata = {
    "totale_casi": totCasiRegione,
    "terapia_intensiva": totTerapiaRegione,
    "ricoverati_con_sintomi": totSintomiRegione,
    "totale_ospedalizzati": totOspedalizzatiRegione,
    "isolamento_domiciliare": totDomiciliariRegione,
    "totale_positivi": totPositiviRegione,
    "dimessi_guariti": totGuaritiRegione,
    "deceduti": totDecedutiRegione,
    "tamponi": totTamponiRegione
};

Then sending that to db via ajax and Adding |然后通过 ajax 将其发送到 db 并添加| in order to have something that I can use to separate the objects later.为了得到一些我以后可以用来分隔对象的东西。 I am saving saveJsondata to a field called jsonBlock我将saveJsondata保存到名为jsonBlock的字段

Then in php I do:然后在 php 我做:

$dataSavedBlocks = get_user_meta( $user_id, 'jsonBlock');
$dataCustom = $dataSavedBlocks[0]; 
$dataCustom = str_replace('|', '', $dataCustom);

Finally in js:最后在js中:

var myJson = '<?php echo $dataCustom; ?>';

Output of that is: Output 是:

var myJson = {"totale_casi":825,"terapia_intensiva":24,"ricoverati_con_sintomi":122,"totale_ospedalizzati":146,"isolamento_domiciliare":598,"totale_positivi":744,"dimessi_guariti":40,"deceduti":41,"tamponi":6477}  ,{"totale_casi":47348,"terapia_intensiva":1362,"ricoverati_con_sintomi":11726,"totale_ospedalizzati":13088,"isolamento_domiciliare":12935,"totale_positivi":26023,"dimessi_guariti":13020,"deceduti":8305,"tamponi":133588}  ;

Now I need to loop and get each individual value现在我需要循环并获取每个单独的值

You don't need to use the loop... just try console.log(customJsonData.totale_positivi).您不需要使用循环...只需尝试 console.log(customJsonData.totale_positivi)。 JSON properties become object attributes when parsed. JSON 属性在解析时变为 object 属性。 Hence JavaScript Object Notation 8^D因此 JavaScript Object表示法 8^D

Actually it is not an Array.实际上它不是一个数组。 If you want to iterate, use object keys.如果要迭代,请使用 object 键。

 var myJson = '{"totale_casi":825,"terapia_intensiva":24,"ricoverati_con_sintomi":122,"totale_ospedalizzati":146,"isolamento_domiciliare":598,"totale_positivi":744,"dimessi_guariti":40,"deceduti":41,"tamponi":6477} '; var customJsonData = JSON.parse(myJson); Object.keys(customJsonData).forEach(key=>{ console.log(customJsonData[key]); })

If you want a single value:如果你想要一个值:

 var myJson = '{"totale_casi":825,"terapia_intensiva":24,"ricoverati_con_sintomi":122,"totale_ospedalizzati":146,"isolamento_domiciliare":598,"totale_positivi":744,"dimessi_guariti":40,"deceduti":41,"tamponi":6477} '; var customJsonData = JSON.parse(myJson); console.log(customJsonData.terapia_intensiva)

If you have an array of objects:如果你有一个对象数组:

 var myJson = '[{"totale_casi":825,"terapia_intensiva":24,"ricoverati_con_sintomi":122,"totale_ospedalizzati":146,"isolamento_domiciliare":598,"totale_positivi":744,"dimessi_guariti":40,"deceduti":41,"tamponi":6477},{"totale_casi":826,"terapia_intensiva":24,"ricoverati_con_sintomi":122,"totale_ospedalizzati":146,"isolamento_domiciliare":598,"totale_positivi":744,"dimessi_guariti":40,"deceduti":41,"tamponi":6477},{"totale_casi":827,"terapia_intensiva":24,"ricoverati_con_sintomi":122,"totale_ospedalizzati":146,"isolamento_domiciliare":598,"totale_positivi":744,"dimessi_guariti":40,"deceduti":41,"tamponi":6477}]'; var customJsonData = JSON.parse(myJson); customJsonData.forEach(data=>{ console.log(data.totale_casi); })

This is how I resolved it:这就是我解决它的方法:

var myJson = '<?php echo $dataCustom; ?>';
var customJsonData = JSON.parse("["+myJson+"]");

Now that we have a valid json, we can loop and iterate with each obj:现在我们有了一个有效的 json,我们可以对每个 obj 进行循环和迭代:

for(var d = 0; d < customJsonData.length; ++d) {
  console.log(customJsonData[d].totale_casi);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM