Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不知道传入字段的情况下将json解析为变量_Javascript_Json_Node.js - Fatal编程技术网

Javascript 在不知道传入字段的情况下将json解析为变量

Javascript 在不知道传入字段的情况下将json解析为变量,javascript,json,node.js,Javascript,Json,Node.js,我试图在不知道传入字段的情况下使用javascript解析json。我似乎已经明白了这一点,但试图将其映射到我需要的设置格式是行不通的 var json = '{"new_records":"1022", "updated_records":"546565", "changed_records":"546566", "deleted_records":"122345", "missing_records":"78"}'; obj = JSON.parse(json

我试图在不知道传入字段的情况下使用javascript解析json。我似乎已经明白了这一点,但试图将其映射到我需要的设置格式是行不通的

var json = '{"new_records":"1022", "updated_records":"546565", 
       "changed_records":"546566", "deleted_records":"122345", 
       "missing_records":"78"}';
obj = JSON.parse(json);
console.log(Object.keys(obj));
console.log(Object.values(obj));
for (var p in obj) {
 console.log(p);
}    
所以我不知道json是数组还是对象,或者两者都是。接下来我要做的是解析json键和值对或将其推送到如下格式:

line = "measurement" + " ,new_records="1022" + ",updated_records="546565" + ",changed_records="546566" + ",deleted_records="122345" + ",missing_records="78"  + " " + Date.now() * 1000000;
正如您在上面看到的,字段和值与其他预定义值(如datetime)一样放置在上面


有人对如何做到这一点有想法、示例代码或建议吗?

我不太理解最终目标,但可能是这样的

//  HTML
<div id="result">
  loading
</div>
//  CSS
body {
  background: #20262E;
  padding: 20px;
  font-family: Helvetica;
  color: white;
}
//  JavaScript
window.handleJsonObj = function(json){
  let result = [
    'yourDate=' + Date.now() * 1000,
    'somethingElse=' + Math.random()
  ];
  Object.keys(json).forEach((key) => {
    let value = json[key];
    result.push(key + '=' + value)
  });
  let elem = document.getElementById('result');
  elem.innerHTML += 'measurement, ' + result.join(', ');
  elem.innerHTML += '<br><hr>'
};
window.parseJsonStr = function(jsonStr) {
    let json = JSON.parse(jsonStr);
    if (Array.isArray(json)) {
    return json[0];
  }
  return json;
}
$(document).ready(() => {
    let jsonString1 = '{"new_records":"1022", "updated_records":"546565", "changed_records":"546566", "deleted_records":"122345", "missing_records":"78"}';
  let jsonString2 = '[{"new_records":"1022", "updated_records":"546565", "changed_records":"546566", "deleted_records":"122345", "missing_records":"78"}]';
  let json1 = parseJsonStr(jsonString1);
  let json2 = parseJsonStr(jsonString2);
  window.handleJsonObj(json1);
  window.handleJsonObj(json2);
});
//HTML
加载
//CSS
身体{
背景:#20262E;
填充:20px;
字体系列:Helvetica;
颜色:白色;
}
//JavaScript
window.handleJsonObj=函数(json){
让结果=[
'yourDate='+Date.now()*1000,
'somethingElse='+Math.random()
];
Object.keys(json).forEach((key)=>{
让value=json[key];
结果.按(键+'='+值)
});
让elem=document.getElementById('result');
elem.innerHTML+='measurement',+result.join(',');
elem.innerHTML+='

' }; window.parseJsonStr=函数(jsonStr){ 让json=json.parse(jsonStr); if(Array.isArray(json)){ 返回json[0]; } 返回json; } $(文档).ready(()=>{ 让jsonString1='{“新记录”:“1022”,“更新记录”:“546565”,“更改记录”:“546566”,“删除记录”:“122345”,“丢失记录”:“78”}”; 让jsonString2='[{“新记录”:“1022”,“更新记录”:“546565”,“更改记录”:“546566”,“删除记录”:“122345”,“丢失记录”:“78”}]; 让json1=parseJsonStr(jsonString1); 让json2=parseJsonStr(jsonString2); handleJsonObj(json1); handleJsonObj(json2); });

您可以使用
array.isArray(myVariable)
json不能既是数组又是对象,我被java标记弄糊涂了。json实际上是来自java后端吗?如果您不知道它是如何产生的,并且您唯一确定的是每个字段将包含一个冒号(“:”),那么可能需要将冒号前后的所有值都正则化?这个Java是如何相关的?我不明白你需要什么,你想把这个对象变成一个字符串吗?谢谢Rainer;这在功能上正是我想要的。我只需要将其转换为适合nifi环境的格式