Skip to content

Commit e7039fd

Browse files
Jens BorrisholtJens Borrisholt
Jens Borrisholt
authored and
Jens Borrisholt
committed
Feature: jtUnknown mapped to a string
1 parent 39b8870 commit e7039fd

File tree

3 files changed

+6
-28
lines changed

3 files changed

+6
-28
lines changed

Lib/Pkg.Json.JsonValueHelper.pas

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class function TJsonValueHelper.GetJsonType(aJsonValue: TJsonValue): TJsonType;
2626
b: Boolean;
2727
d: Double;
2828
E: Extended;
29+
DT: TdateTime;
2930
begin
3031
if aJsonValue = nil then
3132
exit(jtObject);
@@ -59,12 +60,8 @@ class function TJsonValueHelper.GetJsonType(aJsonValue: TJsonValue): TJsonType;
5960
begin
6061
Value := aJsonValue.AsType<string>;
6162

62-
try
63-
ISO8601ToDate(Value);
63+
if TryISO8601ToDate(Value, DT) then
6464
exit(jtDateTime);
65-
except
66-
67-
end;
6865

6966
if TryStrToFloat(Value, E) then
7067
Result := jtString

Lib/Pkg.Json.Mapper.pas

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -66,29 +66,13 @@ procedure TPkgJsonMapper.ProcessJsonObject(aJsonValue: TJsonValue; aParentClass:
6666
if aJsonValue = nil then
6767
exit;
6868

69-
if not(aJsonValue is TJSONObject) then
70-
begin
71-
JsonType := GetJsonType(aJsonValue);
72-
73-
var
74-
Name := 'Element';
75-
76-
if (aJsonValue is TJsonString) then
77-
Name := (aJsonValue as TJsonString).Value;
78-
79-
TStubField.Create(aParentClass, Name, JsonType);
80-
exit;
81-
end;
82-
8369
JSONObject := aJsonValue as TJSONObject;
8470
for JsonPair in JSONObject do
8571
begin
8672
JSONValue := JsonPair.JSONValue;
8773
JsonType := GetJsonType(JSONValue);
8874

8975
case JsonType of
90-
jtUnknown,
91-
// { do nothing };
9276
jtObject:
9377
begin
9478
StubClass := TStubClass.Construct(aParentClass, JsonPair.JsonString.Value, Self.FStubClasses);

Lib/Pkg.Json.StubField.pas

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ TStubField = class(TJsonName)
2222
FName: string;
2323
strict protected
2424
procedure SetName(const Value: string); override;
25-
class function GetTypeAsString(AType: TJsonType): string; overload;
25+
class function GetTypeAsString(aJsonType: TJsonType): string; overload;
2626
function GetTypeAsString: string; overload; virtual;
2727
public
2828
function IsArrayField: Boolean;
@@ -378,9 +378,6 @@ Lines.Add(Name + ' = class' + IfThen(BaseClass = '', '', '(' + BaseClass + '
378378

379379
for StubField in FItems do
380380
begin
381-
if (StubField.FieldType = jtUnknown) or ((StubField is TStubContainerField) and ((StubField as TStubContainerField).ContainedType = jtUnknown)) then
382-
Lines.AddFormat(' property %s: %s read %s write %s;', [StubField.PropertyName, StubField.TypeAsString, StubField.FieldName, StubField.FieldName]);
383-
384381
if StubField.IsArrayField then
385382
begin
386383
StubArrayField := StubField as TStubArrayField;
@@ -443,11 +440,11 @@ constructor TStubField.Create(aParentClass: TStubClass; aItemName: string; aFiel
443440
FParentClass.Items.Add(Self);
444441
end;
445442

446-
class function TStubField.GetTypeAsString(AType: TJsonType): string;
443+
class function TStubField.GetTypeAsString(aJsonType: TJsonType): string;
447444
begin
448-
case AType of
445+
case aJsonType of
449446
jtUnknown:
450-
Result := 'Unknown';
447+
Result := 'string';
451448
jtString:
452449
Result := 'string';
453450
jtTrue, jtFalse:

0 commit comments

Comments
 (0)