mORMot and Open Source friends
Check-in [79148a2918]
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:{1080} fixed JsonToObject() j2oIgnoreUnknownProperty propagation to nested TCollection/TObjectList fields
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 79148a2918b007fbd9d16aca5694f6d0378dea2b
User & Date: ab 2015-03-16 07:47:33
Context
2015-03-16
08:01
{1081} made GarbageCollectorFree public - may be usefull e.g. with packages check-in: aeca672828 user: ab tags: trunk
07:47
{1080} fixed JsonToObject() j2oIgnoreUnknownProperty propagation to nested TCollection/TObjectList fields check-in: 79148a2918 user: ab tags: trunk
2015-03-13
16:28
{1079} ensured SynCommons.GetTickCount64 is used in SynSSPIAuth.pas, and not the version in Windows.pas check-in: 36ccbf02db user: ab tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to SQLite3/mORMot.pas.

37393
37394
37395
37396
37397
37398
37399
37400
37401
37402
37403
37404
37405
37406
37407
.....
37426
37427
37428
37429
37430
37431
37432
37433
37434
37435
37436
37437
37438
37439
37440
.....
37558
37559
37560
37561
37562
37563
37564
37565
37566
37567
37568
37569
37570
37571
37572
          if TObjectListItemClass=nil then begin // recognize "ClassName":...
            ItemClass := JSONSerializerRegisteredClass.Find(From,true);
            if ItemClass=nil then
              exit; // unknown type
            Item := ClassInstanceCreate(ItemClass);
          end else
            Item := ClassInstanceCreate(TObjectListItemClass);
          From := JSONToObject(Item,From,NestedValid);
          if not NestedValid then begin
            result := From;
            exit;
          end else
          if From=nil then
            exit;
          Lst.Add(Item);
................................................................................
            break;
          end;
          ',':
            inc(From); // valid delimiter between objects
          '{': begin
            result := From;
            CollItem := Coll.Add;
            From := JSONToObject(CollItem,From,NestedValid);
            if not NestedValid then begin
              result := From;
              exit;
            end else
            if From=nil then
              exit;
          end;
................................................................................
      V := GetInteger(PropValue,err); // PtrInt is enough (TID=Int64 uneeded) 
      if err<>0 then
        exit;
      TSQLRecord(Value).fID := V;
      continue;
    end;
    P := ClassFieldPropWithParentsFromUTF8(ValueClass,PropName);
    if P=nil then // unknwown property
      if j2oIgnoreUnknownProperty in Options then begin
        From := GotoNextJSONItem(From,1,@EndOfObject);
        continue;
      end else
        exit; // by default, abort
    Kind := P^.PropType^.Kind;
    while From^ in [#1..' '] do inc(From);






|







 







|







 







|







37393
37394
37395
37396
37397
37398
37399
37400
37401
37402
37403
37404
37405
37406
37407
.....
37426
37427
37428
37429
37430
37431
37432
37433
37434
37435
37436
37437
37438
37439
37440
.....
37558
37559
37560
37561
37562
37563
37564
37565
37566
37567
37568
37569
37570
37571
37572
          if TObjectListItemClass=nil then begin // recognize "ClassName":...
            ItemClass := JSONSerializerRegisteredClass.Find(From,true);
            if ItemClass=nil then
              exit; // unknown type
            Item := ClassInstanceCreate(ItemClass);
          end else
            Item := ClassInstanceCreate(TObjectListItemClass);
          From := JSONToObject(Item,From,NestedValid,nil,Options);
          if not NestedValid then begin
            result := From;
            exit;
          end else
          if From=nil then
            exit;
          Lst.Add(Item);
................................................................................
            break;
          end;
          ',':
            inc(From); // valid delimiter between objects
          '{': begin
            result := From;
            CollItem := Coll.Add;
            From := JSONToObject(CollItem,From,NestedValid,nil,Options);
            if not NestedValid then begin
              result := From;
              exit;
            end else
            if From=nil then
              exit;
          end;
................................................................................
      V := GetInteger(PropValue,err); // PtrInt is enough (TID=Int64 uneeded) 
      if err<>0 then
        exit;
      TSQLRecord(Value).fID := V;
      continue;
    end;
    P := ClassFieldPropWithParentsFromUTF8(ValueClass,PropName);
    if P=nil then // unknown property
      if j2oIgnoreUnknownProperty in Options then begin
        From := GotoNextJSONItem(From,1,@EndOfObject);
        continue;
      end else
        exit; // by default, abort
    Kind := P^.PropType^.Kind;
    while From^ in [#1..' '] do inc(From);

Changes to SynopseCommit.inc.

1
'1.18.1079'
|
1
'1.18.1080'