| 141 | |
| 142 | |
| 143 | bool JSONReader::readOne(UInt8 type, DataWriter& writer) { |
| 144 | |
| 145 | switch (type) { |
| 146 | |
| 147 | case STRING: |
| 148 | packet.next(1); // skip " |
| 149 | writer.writeString(STR packet.current(), _size); |
| 150 | packet.next(_size+1); // skip string" |
| 151 | return true; |
| 152 | |
| 153 | case NUMBER: |
| 154 | packet.next(_size); |
| 155 | writer.writeNumber(_number); |
| 156 | return true; |
| 157 | |
| 158 | case BOOLEAN: |
| 159 | packet.next(_size); |
| 160 | writer.writeBoolean(_number!=0); |
| 161 | return true; |
| 162 | |
| 163 | case DATE: |
| 164 | packet.next(_size+2); // "date" |
| 165 | writer.writeDate(_date); |
| 166 | return true; |
| 167 | |
| 168 | case NIL: |
| 169 | packet.next(4); // null |
| 170 | writer.writeNull(); |
| 171 | return true; |
| 172 | |
| 173 | case ARRAY: { |
| 174 | packet.next(); // skip [ |
| 175 | // count number of elements |
| 176 | UInt32 count(0); |
| 177 | countArrayElement(count); |
| 178 | // write array |
| 179 | writer.beginArray(count); |
| 180 | while (count-- > 0) { |
| 181 | if(!readNext(writer)) |
| 182 | writer.writeNull(); |
| 183 | } |
| 184 | writer.endArray(); |
| 185 | // skip ] |
| 186 | current(); |
| 187 | packet.next(); |
| 188 | |
| 189 | return true; |
| 190 | } |
| 191 | } |
| 192 | |
| 193 | // Object |
| 194 | packet.next(); // skip { |
| 195 | |
| 196 | bool started(false); |
| 197 | const UInt8* cur(NULL); |
| 198 | while ((cur=current()) && *cur != '}') { |
| 199 | |
| 200 | if (started) { |
nothing calls this directly
no test coverage detected