This commit is contained in:
wentch
2016-01-08 10:38:47 +08:00
parent 9aca78400a
commit 25fa076db8
6 changed files with 17 additions and 15 deletions

View File

@@ -55,14 +55,14 @@ public final class MapDecoder<K, V> implements Decodeable<Reader, Map<K, V>> {
if (len == Reader.SIGN_NOLENGTH) { if (len == Reader.SIGN_NOLENGTH) {
while (in.hasNext()) { while (in.hasNext()) {
K key = keyDecoder.convertFrom(in); K key = keyDecoder.convertFrom(in);
in.skipBlank(); in.readBlank();
V value = valueDecoder.convertFrom(in); V value = valueDecoder.convertFrom(in);
result.put(key, value); result.put(key, value);
} }
} else { } else {
for (int i = 0; i < len; i++) { for (int i = 0; i < len; i++) {
K key = keyDecoder.convertFrom(in); K key = keyDecoder.convertFrom(in);
in.skipBlank(); in.readBlank();
V value = valueDecoder.convertFrom(in); V value = valueDecoder.convertFrom(in);
result.put(key, value); result.put(key, value);
} }

View File

@@ -181,14 +181,14 @@ public final class ObjectDecoder<R extends Reader, T> implements Decodeable<R, T
final T result = this.creator.create(); final T result = this.creator.create();
while (in.hasNext()) { while (in.hasNext()) {
DeMember member = in.readFieldName(members); DeMember member = in.readFieldName(members);
in.skipBlank(); in.readBlank();
if (member == null) { if (member == null) {
in.skipValue(); //跳过不存在的属性的值 in.skipValue(); //跳过不存在的属性的值
} else { } else {
member.read(in, result); member.read(in, result);
} }
} }
in.readObjectE(); in.readObjectE(typeClass);
return result; return result;
} else { //带参数的构造函数 } else { //带参数的构造函数
final DeMember<R, T, ?>[] fields = this.creatorConstructorMembers; final DeMember<R, T, ?>[] fields = this.creatorConstructorMembers;
@@ -197,7 +197,7 @@ public final class ObjectDecoder<R extends Reader, T> implements Decodeable<R, T
int oc = 0; int oc = 0;
while (in.hasNext()) { while (in.hasNext()) {
DeMember member = in.readFieldName(members); DeMember member = in.readFieldName(members);
in.skipBlank(); in.readBlank();
if (member == null) { if (member == null) {
in.skipValue(); //跳过不存在的属性的值 in.skipValue(); //跳过不存在的属性的值
} else { } else {
@@ -213,7 +213,7 @@ public final class ObjectDecoder<R extends Reader, T> implements Decodeable<R, T
if (flag) otherParams[oc++] = new Object[]{member.attribute, val}; if (flag) otherParams[oc++] = new Object[]{member.attribute, val};
} }
} }
in.readObjectE(); in.readObjectE(typeClass);
final T result = this.creator.create(constructorParams); final T result = this.creator.create(constructorParams);
for (int i = 0; i < oc; i++) { for (int i = 0; i < oc; i++) {
((Attribute) otherParams[i][0]).set(result, otherParams[i][1]); ((Attribute) otherParams[i][0]).set(result, otherParams[i][1]);

View File

@@ -36,11 +36,12 @@ public abstract class Reader {
/** /**
* /跳过字段与值之间的多余内容, json就是跳过:符, map跳过: * /跳过字段与值之间的多余内容, json就是跳过:符, map跳过:
*/ */
public abstract void skipBlank(); public abstract void readBlank();
/** /**
* 读取对象的类名, 返回 null 表示对象为null 返回空字符串表示当前class与返回的class一致返回非空字符串表示class是当前class的子类。 * 读取对象的类名, 返回 null 表示对象为null 返回空字符串表示当前class与返回的class一致返回非空字符串表示class是当前class的子类。
* *
* @param clazz 类名
* @return 返回字段数 * @return 返回字段数
*/ */
public String readObjectB(final Class clazz) { public String readObjectB(final Class clazz) {
@@ -51,8 +52,9 @@ public abstract class Reader {
/** /**
* 读取对象的尾端 * 读取对象的尾端
* *
* @param clazz 类名
*/ */
public abstract void readObjectE(); public abstract void readObjectE(final Class clazz);
/** /**
* 读取数组的开头并返回数组的长度 * 读取数组的开头并返回数组的长度

View File

@@ -170,7 +170,7 @@ public class BsonReader extends Reader {
} }
@Override @Override
public final void readObjectE() { public final void readObjectE(final Class clazz) {
if (readShort() != SIGN_OBJECTE) { if (readShort() != SIGN_OBJECTE) {
throw new ConvertException("a bson object must end with " + (SIGN_OBJECTE) throw new ConvertException("a bson object must end with " + (SIGN_OBJECTE)
+ " (position = " + position + ") but '" + currentByte() + "'"); + " (position = " + position + ") but '" + currentByte() + "'");
@@ -210,7 +210,7 @@ public class BsonReader extends Reader {
* 判断下一个非空白字节是否: * 判断下一个非空白字节是否:
*/ */
@Override @Override
public final void skipBlank() { public final void readBlank() {
} }
/** /**

View File

@@ -139,7 +139,7 @@ public class JsonByteBufferReader extends JsonReader {
* 判断下一个非空白字符是否: * 判断下一个非空白字符是否:
*/ */
@Override @Override
public final void skipBlank() { public final void readBlank() {
char ch = nextGoodChar(); char ch = nextGoodChar();
if (ch == ':') return; if (ch == ':') return;
throw new ConvertException("expected a ':' but '" + ch + "'(position = " + position + ")"); throw new ConvertException("expected a ':' but '" + ch + "'(position = " + position + ")");

View File

@@ -93,7 +93,7 @@ public class JsonReader extends Reader {
for (String key1 : keys) { for (String key1 : keys) {
while (this.hasNext()) { while (this.hasNext()) {
String field = this.readSmallString(); String field = this.readSmallString();
skipBlank(); readBlank();
if (key1.equals(field)) break; if (key1.equals(field)) break;
skipValue(); skipValue();
} }
@@ -113,7 +113,7 @@ public class JsonReader extends Reader {
} else if (ch == '{') { } else if (ch == '{') {
while (hasNext()) { while (hasNext()) {
this.readSmallString(); //读掉field this.readSmallString(); //读掉field
this.skipBlank(); this.readBlank();
this.skipValue(); this.skipValue();
} }
} else if (ch == '[') { } else if (ch == '[') {
@@ -189,7 +189,7 @@ public class JsonReader extends Reader {
} }
@Override @Override
public final void readObjectE() { public final void readObjectE(final Class clazz) {
} }
/** /**
@@ -237,7 +237,7 @@ public class JsonReader extends Reader {
* 判断下一个非空白字符是否: * 判断下一个非空白字符是否:
*/ */
@Override @Override
public void skipBlank() { public void readBlank() {
char ch = this.text[++this.position]; char ch = this.text[++this.position];
if (ch == ':') return; if (ch == ':') return;
if (ch <= ' ') { if (ch <= ' ') {