From 8192830b75b01a5576e80cce068e1c5dae4eb9b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Prante?= Date: Tue, 22 Nov 2022 16:26:48 +0100 Subject: [PATCH] fix NPE in JSON writing --- gradle.properties | 2 +- .../org/xbib/marc/json/MarcJsonWriter.java | 31 +++++++++++++------ 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/gradle.properties b/gradle.properties index 5798b56..62d65f7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group = org.xbib name = marc -version = 2.9.6 +version = 2.9.7 org.gradle.warning.mode = ALL diff --git a/src/main/java/org/xbib/marc/json/MarcJsonWriter.java b/src/main/java/org/xbib/marc/json/MarcJsonWriter.java index 42b67ba..ce9e20b 100644 --- a/src/main/java/org/xbib/marc/json/MarcJsonWriter.java +++ b/src/main/java/org/xbib/marc/json/MarcJsonWriter.java @@ -458,18 +458,31 @@ public class MarcJsonWriter extends MarcContentHandler implements Flushable, Clo if (c5 > 0) { sb.append(","); } - sb.append("\"").append(escape(s)).append("\""); + if (s != null) { + sb.append("\"").append(escape(s)).append("\""); + } else { + sb.append("null"); + } c5++; } sb.append("]"); } else { - sb.append("\"").append(escape(subfield.getValue().toString())).append("\""); + Object object = subfield.getValue(); + if (object != null) { + sb.append("\"").append(escape(object.toString())).append("\""); + } else { + sb.append("null"); + } } c4++; sb.append("}"); } } else { - sb.append("\"").append(escape(value2.toString())).append("\""); + if (value2 != null) { + sb.append("\"").append(escape(value2.toString())).append("\""); + } else { + sb.append("null"); + } } c3++; } @@ -478,10 +491,10 @@ public class MarcJsonWriter extends MarcContentHandler implements Flushable, Clo } sb.append("}"); } else { - if (value == null) { - sb.append("null"); - } else { + if (value != null) { sb.append("\"").append(escape(value.toString())).append("\""); + } else { + sb.append("null"); } } c1++; @@ -493,10 +506,10 @@ public class MarcJsonWriter extends MarcContentHandler implements Flushable, Clo } sb.append("]"); } else { - if (o == null) { - sb.append("null"); - } else { + if (o != null) { sb.append("\"").append(escape(o.toString())).append("\""); + } else { + sb.append("null"); } } c0++;