This commit is contained in:
Looly 2024-10-01 00:28:58 +08:00
parent 7bdec92d8b
commit 0e75e75f5d
3 changed files with 24 additions and 23 deletions

View File

@ -201,6 +201,7 @@ public class JSONMapper implements Serializable {
* <li>standard property (Double, String, et al) = 原对象</li>
* <li>其它 = 尝试包装为JSONObject否则返回{@code null}</li>
* </ul>
* 注意此方法不支持JSON字符串的解析解析请用{@link #map(CharSequence)}
*
* @param obj 被映射的对象
* @return 映射后的值null表示此值需被忽略
@ -249,11 +250,11 @@ public class JSONMapper implements Serializable {
* </ul>
*
* @param obj 被映射的对象
* @param json 被映射的到的对象{@code null}表示自动识别
* @param json 被映射的到的对象{@code null}表示根据序列化器自动识别
* @param <T> JSON类型
* @return 映射后的值null表示此值需被忽略
*/
@SuppressWarnings({"ReassignedVariable", "unchecked"})
@SuppressWarnings({"unchecked"})
private <T extends JSON> T mapTo(Object obj, final T json) {
if (null == obj) {
return null;

View File

@ -81,24 +81,6 @@ public class IterTypeAdapter implements MatcherJSONSerializer<Object>, MatcherJS
return deserialize(json, collectionClass, elementType);
}
/**
* 从Iterator中读取数据并添加到JSONArray中
*
* @param source 源对象用于检查循环引用
* @param iter {@link Iterator}
* @param jsonArray {@link JSONArray}
*/
public void mapFromIterator(final Object source, final Iterator<?> iter, final JSONArray jsonArray) {
Object next;
while (iter.hasNext()) {
next = iter.next();
// 检查循环引用
if (next != source) {
jsonArray.addObj(next);
}
}
}
/**
* 反序列化
*
@ -119,6 +101,24 @@ public class IterTypeAdapter implements MatcherJSONSerializer<Object>, MatcherJS
return result;
}
/**
* 从Iterator中读取数据并添加到JSONArray中
*
* @param source 源对象用于检查循环引用
* @param iter {@link Iterator}
* @param jsonArray {@link JSONArray}
*/
static void mapFromIterator(final Object source, final Iterator<?> iter, final JSONArray jsonArray) {
Object next;
while (iter.hasNext()) {
next = iter.next();
// 检查循环引用
if (next != source) {
jsonArray.addObj(next);
}
}
}
/**
* 将JSONObject转换为集合
*
@ -126,7 +126,7 @@ public class IterTypeAdapter implements MatcherJSONSerializer<Object>, MatcherJS
* @param result 结果集合
* @param elementType 元素类型
*/
private void fill(final JSONObject json, final Collection<?> result, final Type elementType) {
private static void fill(final JSONObject json, final Collection<?> result, final Type elementType) {
json.forEach((key, value)->{
result.add(null == value ? null : value.toBean(elementType));
});
@ -139,7 +139,7 @@ public class IterTypeAdapter implements MatcherJSONSerializer<Object>, MatcherJS
* @param result 结果集合
* @param elementType 元素类型
*/
private void fill(final JSONArray json, final Collection<?> result, final Type elementType) {
private static void fill(final JSONArray json, final Collection<?> result, final Type elementType) {
json.forEach((element)->{
result.add(null == element ? null : element.toBean(elementType));
});

View File

@ -74,7 +74,7 @@ public class MapTypeAdapter implements MatcherJSONSerializer<Map<?, ?>>, Matcher
} else{
iter = bean.entrySet().iterator();
}
IterTypeAdapter.INSTANCE.mapFromIterator(bean, iter, (JSONArray) contextJson);
IterTypeAdapter.mapFromIterator(bean, iter, (JSONArray) contextJson);
return contextJson;
}