解析JSON对象数组-空值防止反转
parsing an array of JSON objects - null value preventing upsert
我正在解析一个对象数组,每个数组中大约有12个字段。我用两个嵌套的for(var i = 0; i < array.length; i++)
函数来做这件事,并且在几个响应中遇到了null
字段。
我期望得到一个嵌入的对象,... "caption": {"id":"some id", "text":"some text"}
,但在某些情况下我反而得到了null
。我的模式不要求字段有值,但是文档被踢出。
我怎样才能绕过这个?我希望null只是插入一个空白值,但事实并非如此。我在Meteor.js框架内工作,但我需要下面帮助的代码片段只是普通的旧javascript和mongodb upsert。错误在标题上。文本行。
Meteor.methods({
'getMethod': function (var1, var2) {
check (var1, Number);
this.unblock();
var url = "https://www.url.com/"+var1+"/stuff?"+token+"¶m="+var2;
var result = HTTP.call("GET", url);
if(result.statusCode===200) {
var aArray = JSON.parse(result.content).data;
for(var i = 0; i < aArray.length; i++){
var id = aArray[i].id;
var aItem = {
_id: aArray[i].id,
userId: aArray[i].user.id,
username: aArray[i].user.username,
created_time: parseInt(aArray[i].created_time),
type: aArray[i].type,
caption: aArray[i].caption.text, // THIS LINE IS THROWING THE ERROR !!
}
Collection.upsert(id, {$set: aItem}, {validationContext: 'upsertForm'}, function(error, result) {
if (error){
console.log("Error:", error);
return aArray;
}
});
}
} else {
console.log("Error: ", result.statusCode);
var errorJson = JSON.parse(result.content);
throw new Meteor.Error(result.statusCode, errorJson.error);
}
},
});
使用三进制检查标题上是否有text属性:
caption: (aArray[i].caption.text) ? aArray[i].caption.text : ''
编辑:如果标题属性有问题,则使用以下命令:
caption: (aArray[i].caption) ? aArray[i].caption.text : ''
h/t RobG 相关文章:
- 映射数组ES6时考虑空值
- Model中的Typeahead返回空值以形成输入字段
- JavaScript-HTML表单到JSON(空值)和格式
- webkit输入类型=在错误日期发送空值的日期
- 如何使用字符串创建空的JSON键(是否嵌套)
- 使用挖空从 JSON 预填充所选值以进行多项选择
- JSON 是否应包含空值
- jquery $.ajax 的 MVC 3 反序列化请求 json 到对象中填充空值而不是空白字符串
- Json - 检查子节点空值
- Json 数组返回空值
- JSON正在删除包含空值的属性
- 使用angular js的Json rest客户端无法填充数据(空值)
- 如何检查json中的空值
- 解析JSON对象数组-空值防止反转
- 如何在JSON对象中包含空值作为占位符
- 将表单序列化为不带空值的json
- 按字母顺序对 JSON 进行排序(最后为空值)
- 从 PHP => JSON => JS 时为空值
- 用数组中的空值反序列化JSON
- JSON对象的已知非空值字段返回空字符串