mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-05-09 23:51:34 +08:00
fix code
This commit is contained in:
parent
3a54cc9445
commit
7bdec92d8b
@ -81,6 +81,24 @@ public class IterTypeAdapter implements MatcherJSONSerializer<Object>, MatcherJS
|
|||||||
return deserialize(json, collectionClass, elementType);
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 反序列化
|
* 反序列化
|
||||||
*
|
*
|
||||||
@ -101,23 +119,6 @@ public class IterTypeAdapter implements MatcherJSONSerializer<Object>, MatcherJS
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 从Iterator中读取数据,并添加到JSONArray中
|
|
||||||
*
|
|
||||||
* @param iter {@link Iterator}
|
|
||||||
* @param jsonArray {@link JSONArray}
|
|
||||||
*/
|
|
||||||
private 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转换为集合
|
* 将JSONObject转换为集合
|
||||||
*
|
*
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
package org.dromara.hutool.json.serializer.impl;
|
package org.dromara.hutool.json.serializer.impl;
|
||||||
|
|
||||||
import org.dromara.hutool.core.convert.CompositeConverter;
|
import org.dromara.hutool.core.convert.ConvertUtil;
|
||||||
import org.dromara.hutool.core.map.MapUtil;
|
import org.dromara.hutool.core.map.MapUtil;
|
||||||
import org.dromara.hutool.core.reflect.TypeUtil;
|
import org.dromara.hutool.core.reflect.TypeUtil;
|
||||||
import org.dromara.hutool.core.text.StrUtil;
|
import org.dromara.hutool.core.text.StrUtil;
|
||||||
@ -62,8 +62,10 @@ public class MapTypeAdapter implements MatcherJSONSerializer<Map<?, ?>>, Matcher
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public JSON serialize(final Map<?, ?> bean, final JSONContext context) {
|
public JSON serialize(final Map<?, ?> bean, final JSONContext context) {
|
||||||
|
|
||||||
|
final JSON contextJson = context.getContextJson();
|
||||||
// 序列化为JSONArray
|
// 序列化为JSONArray
|
||||||
if(context.getContextJson() instanceof JSONArray){
|
if(contextJson instanceof JSONArray){
|
||||||
final Iterator<?> iter;
|
final Iterator<?> iter;
|
||||||
if(bean instanceof Iterator){
|
if(bean instanceof Iterator){
|
||||||
iter = (Iterator<?>) bean;
|
iter = (Iterator<?>) bean;
|
||||||
@ -72,7 +74,8 @@ public class MapTypeAdapter implements MatcherJSONSerializer<Map<?, ?>>, Matcher
|
|||||||
} else{
|
} else{
|
||||||
iter = bean.entrySet().iterator();
|
iter = bean.entrySet().iterator();
|
||||||
}
|
}
|
||||||
return IterTypeAdapter.INSTANCE.serialize(bean, context);
|
IterTypeAdapter.INSTANCE.mapFromIterator(bean, iter, (JSONArray) contextJson);
|
||||||
|
return contextJson;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Map to JSONObject
|
// Map to JSONObject
|
||||||
@ -94,7 +97,7 @@ public class MapTypeAdapter implements MatcherJSONSerializer<Map<?, ?>>, Matcher
|
|||||||
for (final Map.Entry<String, JSON> entry : (JSONObject) json) {
|
for (final Map.Entry<String, JSON> entry : (JSONObject) json) {
|
||||||
map.put(
|
map.put(
|
||||||
// key类型为String转目标类型,使用标准转换器
|
// key类型为String转目标类型,使用标准转换器
|
||||||
CompositeConverter.getInstance().convert(keyType, entry.getKey()),
|
ConvertUtil.convert(keyType, entry.getKey()),
|
||||||
ObjUtil.apply(entry.getValue(), (value)-> value.toBean(valueType))
|
ObjUtil.apply(entry.getValue(), (value)-> value.toBean(valueType))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user