我正在编写一个DataSnap Rest Client(在Delphi中),我想要它提供
json格式的数据到很多平台(如C#,java,C ++,Delphi)。
我正在使用TJsonMarshal
来序列化对象。我正在使用一些东西
类似于:
marshal := TJSONMarshal.Create(TJSONConverter.create);
jsonString := marshal.marshal(myObject).ToString;
但是当我这样做时,生成的JSON就是这样的:
{"type":"WJsonObj.TWPedido","id":1,"fields":
{"Numero":1234,"Data":41606.7632623727,"VlrTotal":2543,
"Produtos":
[{"type":"WJsonObj.TWProdutoPedido","id":2,"fields":
{"Codigo":"P001","Descr":"Computador","Qtde":1,"VrUnitario":1500}},
...
{"type":"WJsonObj.TWProdutoPedido","id":4,"fields":
{"Codigo":"P003","Descr":"Projetor","Qtde":1,"VrUnitario":745}}
]
}
}
我想要简单的JSON,没有元数据('type'
,'id'
和'fields'
),所以我
在非Delphi平台上不会有额外的json解析。有办法吗?
强制TJsonMarshal
序列化为“普通”JSON?
答案 0 :(得分:4)
您应该使用System.JSON
和REST.JSON
代替Data.DBXJson
和Data.DBXJSONReflect
var
foo, newfoo: TFoo;
s: string;
foo := TFoo.Create;
s := TJson.ObjectToJsonString(foo);
newfoo := TJson.JsonToObject<TFoo>(s);