This commit is contained in:
@@ -24,6 +24,7 @@ public class BsonTestMain {
|
|||||||
Serializable[] sers = new Serializable[]{"aaa", 4};
|
Serializable[] sers = new Serializable[]{"aaa", 4};
|
||||||
final BsonConvert convert = BsonFactory.root().getConvert();
|
final BsonConvert convert = BsonFactory.root().getConvert();
|
||||||
byte[] bytes = convert.convertTo(sers);
|
byte[] bytes = convert.convertTo(sers);
|
||||||
|
Utility.println("---", bytes);
|
||||||
Serializable[] a = convert.convertFrom(Serializable[].class, bytes);
|
Serializable[] a = convert.convertFrom(Serializable[].class, bytes);
|
||||||
System.out.println(Arrays.toString(a));
|
System.out.println(Arrays.toString(a));
|
||||||
main2(args);
|
main2(args);
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.redkale.test.convert;
|
package org.redkale.test.convert;
|
||||||
|
|
||||||
import java.util.concurrent.atomic.*;
|
|
||||||
import org.redkale.convert.*;
|
import org.redkale.convert.*;
|
||||||
import org.redkale.convert.bson.*;
|
import org.redkale.convert.bson.*;
|
||||||
import org.redkale.convert.json.*;
|
import org.redkale.convert.json.*;
|
||||||
@@ -57,33 +56,29 @@ public class InnerCoderEntity {
|
|||||||
@Override
|
@Override
|
||||||
public void convertTo(Writer out, InnerCoderEntity value) {
|
public void convertTo(Writer out, InnerCoderEntity value) {
|
||||||
if (value == null) {
|
if (value == null) {
|
||||||
out.wirteClassName(null);
|
out.writeObjectNull(InnerCoderEntity.class);
|
||||||
out.writeNull();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
out.writeObjectB(enMembers.length, value);
|
out.writeObjectB(value);
|
||||||
boolean comma = false;
|
|
||||||
for (EnMember member : enMembers) {
|
for (EnMember member : enMembers) {
|
||||||
comma = member.write(out, comma, value);
|
out.writeObjectField(member, value);
|
||||||
}
|
}
|
||||||
out.writeObjectE(value);
|
out.writeObjectE(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public InnerCoderEntity convertFrom(Reader in) {
|
public InnerCoderEntity convertFrom(Reader in) {
|
||||||
in.readClassName(); //必须先读Class 用于BSON
|
if (in.readObjectB(InnerCoderEntity.class) == null) return null;
|
||||||
if (in.readObjectB() == Reader.SIGN_NULL) return null;
|
int index = 0;
|
||||||
final AtomicInteger index = new AtomicInteger();
|
|
||||||
final Object[] params = new Object[deMembers.length];
|
final Object[] params = new Object[deMembers.length];
|
||||||
while (in.hasNext()) {
|
while (in.hasNext()) {
|
||||||
DeMember member = in.readField(index, deMembers); //读取字段名
|
DeMember member = in.readFieldName(deMembers); //读取字段名
|
||||||
in.skipBlank(); //跳过冒号:
|
in.skipBlank(); //读取字段名与字段值之间的间隔符,JSON则是跳过冒号:
|
||||||
if (member == null) {
|
if (member == null) {
|
||||||
in.skipValue(); //跳过不存在的字段的值, 一般不会发生
|
in.skipValue(); //跳过不存在的字段的值, 一般不会发生
|
||||||
} else {
|
} else {
|
||||||
params[index.get()] = member.read(in);
|
params[index++] = member.read(in);
|
||||||
}
|
}
|
||||||
index.incrementAndGet();
|
|
||||||
}
|
}
|
||||||
in.readObjectE();
|
in.readObjectE();
|
||||||
return InnerCoderEntity.create(params[0] == null ? 0 : (Integer) params[0], (String) params[1]);
|
return InnerCoderEntity.create(params[0] == null ? 0 : (Integer) params[0], (String) params[1]);
|
||||||
@@ -112,9 +107,10 @@ public class InnerCoderEntity {
|
|||||||
System.out.println(convert.convertFrom(InnerCoderEntity.class, json).toString());
|
System.out.println(convert.convertFrom(InnerCoderEntity.class, json).toString());
|
||||||
|
|
||||||
final BsonConvert convert2 = BsonFactory.root().getConvert();
|
final BsonConvert convert2 = BsonFactory.root().getConvert();
|
||||||
byte[] bs = convert2.convertTo(record);
|
byte[] bs = convert2.convertTo(InnerCoderEntity.class, null);
|
||||||
Utility.println("--", bs);
|
Utility.println("--", bs);
|
||||||
System.out.println(convert2.convertFrom(InnerCoderEntity.class, bs).toString());
|
InnerCoderEntity r = convert2.convertFrom(InnerCoderEntity.class, bs);
|
||||||
|
System.out.println(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user