Skip to content

Commit

Permalink
fix issue kordamp#54 and add testcase
Browse files Browse the repository at this point in the history
  • Loading branch information
Alanscut committed Oct 24, 2019
1 parent f0432f6 commit c4e0665
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -242,7 +242,7 @@ private static Set getCycleSet() {
}

protected Object _processValue(Object value, JsonConfig jsonConfig) {
if (JSONNull.getInstance().equals(value)) {
if (JSONNull.getInstance().equals(value) && !(value instanceof String)) {
return JSONNull.getInstance();
} else if (Class.class.isAssignableFrom(value.getClass()) || value instanceof Class) {
return ((Class) value).getName();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -327,8 +327,7 @@ public static boolean isNull(Object obj) {
if (obj instanceof JSONObject) {
return ((JSONObject) obj).isNullObject();
}
return JSONNull.getInstance()
.equals(obj);
return obj instanceof JSONNull;
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*
* SPDX-License-Identifier: Apache-2.0
*
* Copyright 2006-2019 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kordamp.json.bugs;

import junit.framework.TestCase;
import org.kordamp.json.Assertions;
import org.kordamp.json.JSONArray;
import org.kordamp.json.JSONNull;
import org.kordamp.json.JSONObject;

public class TestNullString extends TestCase {
public void test_object_from_null_string() {
JSONObject object = JSONObject.fromObject("{key:\"null\"}");
Assertions.assertEquals("{\"key\":\"null\"}", object.toString());
Assertions.assertTrue(object.get("key") instanceof String);

object = JSONObject.fromObject("{key:null}");
Assertions.assertEquals("{\"key\":null}", object.toString());
Assertions.assertTrue(object.get("key") instanceof JSONNull);
}

public void test_object_element_null_string() {
JSONObject object = new JSONObject();
object.element("key", "null");
Assertions.assertTrue(object.get("key") instanceof String);
}

public void test_array_from_null_string() {
JSONArray array = JSONArray.fromObject("[\"null\"]");
Assertions.assertEquals("[\"null\"]", array.toString());
Assertions.assertTrue(array.get(0) instanceof String);

array = JSONArray.fromObject("[null]");
Assertions.assertEquals("[null]", array.toString());
Assertions.assertTrue(array.get(0) instanceof JSONNull);
}
}

0 comments on commit c4e0665

Please sign in to comment.