@@ -301,28 +301,26 @@ impl Schema {
301
301
302
302
let mut doc = Document :: default ( ) ;
303
303
for ( field_name, json_value) in json_obj. iter ( ) {
304
- match self . get_field ( field_name) {
305
- Some ( field) => {
306
- let field_entry = self . get_field_entry ( field) ;
307
- let field_type = field_entry. field_type ( ) ;
308
- match * json_value {
309
- JsonValue :: Array ( ref json_items) => {
310
- for json_item in json_items {
311
- let value = field_type. value_from_json ( json_item) . map_err ( |e| {
312
- DocParsingError :: ValueError ( field_name. clone ( ) , e)
313
- } ) ?;
314
- doc. add ( FieldValue :: new ( field, value) ) ;
315
- }
316
- }
317
- _ => {
318
- let value = field_type
319
- . value_from_json ( json_value)
320
- . map_err ( |e| DocParsingError :: ValueError ( field_name. clone ( ) , e) ) ?;
321
- doc. add ( FieldValue :: new ( field, value) ) ;
322
- }
304
+ let field = self
305
+ . get_field ( field_name)
306
+ . ok_or_else ( || DocParsingError :: NoSuchFieldInSchema ( field_name. clone ( ) ) ) ?;
307
+ let field_entry = self . get_field_entry ( field) ;
308
+ let field_type = field_entry. field_type ( ) ;
309
+ match * json_value {
310
+ JsonValue :: Array ( ref json_items) => {
311
+ for json_item in json_items {
312
+ let value = field_type
313
+ . value_from_json ( json_item)
314
+ . map_err ( |e| DocParsingError :: ValueError ( field_name. clone ( ) , e) ) ?;
315
+ doc. add ( FieldValue :: new ( field, value) ) ;
323
316
}
324
317
}
325
- None => return Err ( DocParsingError :: NoSuchFieldInSchema ( field_name. clone ( ) ) ) ,
318
+ _ => {
319
+ let value = field_type
320
+ . value_from_json ( json_value)
321
+ . map_err ( |e| DocParsingError :: ValueError ( field_name. clone ( ) , e) ) ?;
322
+ doc. add ( FieldValue :: new ( field, value) ) ;
323
+ }
326
324
}
327
325
}
328
326
Ok ( doc)
0 commit comments