Open
Description
public static void main(String[] args) {
JsonObject j = new JsonObject();
j.add("test", JsonNull.INSTANCE);
System.out.println(JsonOps.INSTANCE.convertTo(JsonOps.INSTANCE, j)); //should return a copy of `j`
}
fails with
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "com.google.gson.JsonElement.getAsJsonPrimitive()" because "input" is null
at com.mojang.serialization.JsonOps.convertTo(JsonOps.java:50)
at com.mojang.serialization.JsonOps.convertTo(JsonOps.java:24)
at com.mojang.serialization.DynamicOps.lambda$convertMap$27(DynamicOps.java:255)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1845)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
at com.mojang.serialization.JsonOps.createMap(JsonOps.java:275)
at com.mojang.serialization.JsonOps.createMap(JsonOps.java:24)
at com.mojang.serialization.DynamicOps.convertMap(DynamicOps.java:254)
at com.mojang.serialization.JsonOps.convertTo(JsonOps.java:42)
at agency.highlysuspect.apathy.rule.CodecUtil.main(CodecUtil.java:145)
It appears there is a check for instanceof JsonNull
s:
DataFixerUpper/src/main/java/com/mojang/serialization/JsonOps.java
Lines 47 to 50 in c100ef0
But it doesn't work, because DynamicOps#getJsonValues
, as well as other methods like getStream
and getList
, filter JsonNull
s to actual null
s.
Metadata
Metadata
Assignees
Labels
No labels