자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi TJsonSerializer.Serializer 버그? 오류? 같은 경험이 있으신분 계실가요?
2017.09.14 21:33
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 바쁜 와중에도 답변을 주시는 분들께 감사 댓글 필수
-----------------------------------------------------------------------------------------------
개발 버전 Delphi 10.2 Version 25.0.26309.314
테스트 소스
type
TPerson = class
private
FName: string;
public
property Name: string read FName write FName;
end;
type
[JsonSerialize(TJsonMemberSerialization.&In)]
TPersonList = class(TObjectList<TPerson>)
public
[JsonIn]
property List;
end;
procedure TForm2.Button7Click(Sender: TObject);
var
Users: TPersonList;
Serializer: TJsonSerializer;
begin
Serializer := TJsonSerializer.Create;
try
Users := TPersonList.Create;
try
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Serializer.Formatting := TJsonFormatting.Indented;
Memo1.Text := Serializer.Serialize(Users);
finally
Users.Free;
end;
finally
Serializer.Free;
end;
end;
결과
{
"List": [
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
null,
null,
null,
null,
null
]
}
결과 와 같이 전체 입력 숫자와 다르게 null 이 잔뜩 붙어 나오는데 혹시 다른분들도 이런거 보신적 있으실까요?
해결 하실분 계시면 꽁수좀 ^^;; 알려주세요~~ 헬프~~~ ^^
댓글 2
Delphi TJsonSerializer.Serializer 버그? 오류? 같은 경험이 있으신분 계실가요?
2017.09.14 21:33
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 바쁜 와중에도 답변을 주시는 분들께 감사 댓글 필수
-----------------------------------------------------------------------------------------------
개발 버전 Delphi 10.2 Version 25.0.26309.314
테스트 소스
type
TPerson = class
private
FName: string;
public
property Name: string read FName write FName;
end;
type
[JsonSerialize(TJsonMemberSerialization.&In)]
TPersonList = class(TObjectList<TPerson>)
public
[JsonIn]
property List;
end;
procedure TForm2.Button7Click(Sender: TObject);
var
Users: TPersonList;
Serializer: TJsonSerializer;
begin
Serializer := TJsonSerializer.Create;
try
Users := TPersonList.Create;
try
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Users.Add(TPerson.Create);
Serializer.Formatting := TJsonFormatting.Indented;
Memo1.Text := Serializer.Serialize(Users);
finally
Users.Free;
end;
finally
Serializer.Free;
end;
end;
결과
{
"List": [
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
{"FName": ""},
null,
null,
null,
null,
null
]
}
결과 와 같이 전체 입력 숫자와 다르게 null 이 잔뜩 붙어 나오는데 혹시 다른분들도 이런거 보신적 있으실까요?
해결 하실분 계시면 꽁수좀 ^^;; 알려주세요~~ 헬프~~~ ^^
Serialize 메소드의 내부를 보면 StringBuilder를 사용합니다.
해당 StringBuilder의 기본 크기가 16($10)입니다. 그래서 총 16개가 나오는 것으로 예상됩니다.
해당 메소드를 참조하셔서, StirngBuilder를 직접 생성해서 진행해보시면 어떨까요^^