commit 6d64526648b59006521f3292cdf17b31fca5467f
parent 3025123cb82d9733e32a47829c686a7e60a5912a
Author: Dan Stillman <dstillman@zotero.org>
Date: Thu, 12 Nov 2015 17:24:03 -0500
Ignore unknown fields in Zotero.Item::fromJSON()
Diffstat:
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/chrome/content/zotero/xpcom/data/item.js b/chrome/content/zotero/xpcom/data/item.js
@@ -3819,12 +3819,18 @@ Zotero.Item.prototype.fromJSON = function (json) {
// Item fields
default:
let fieldID = Zotero.ItemFields.getID(field);
+ if (!fieldID) {
+ Zotero.logError("Discarding unknown JSON field " + field + " for item "
+ + this.libraryKey);
+ continue;
+ }
isValidForType[field] = Zotero.ItemFields.isValidForType(
Zotero.ItemFields.getFieldIDFromTypeAndBase(itemTypeID, fieldID) || fieldID,
this.itemTypeID
);
if (!isValidForType[field]) {
- Zotero.logError("Discarding unknown JSON field " + field + " for item " + this.libraryKey);
+ Zotero.logError("Discarding invalid field " + field + " for type " + itemTypeID
+ + " for item " + this.libraryKey);
continue;
}
this.setField(field, json[field]);
diff --git a/test/tests/itemTest.js b/test/tests/itemTest.js
@@ -966,6 +966,17 @@ describe("Zotero.Item", function () {
})
describe("#fromJSON()", function () {
+ it("should ignore unknown fields", function* () {
+ var json = {
+ itemType: "journalArticle",
+ title: "Test",
+ foo: "Invalid"
+ };
+ var item = new Zotero.Item;
+ item.fromJSON(json);
+ assert.equal(item.getField('title'), 'Test');
+ })
+
it("should accept ISO 8601 dates", function* () {
var json = {
itemType: "journalArticle",