从字符串内部提取JsonArray
我将DelphiXe2与从字符串内部提取JsonArray,json,delphi,type-conversion,Json,Delphi,Type Conversion,我将DelphiXe2与DBXJSON一起使用,处理字符串中包含的JsonArray时遇到问题。我得到的线索是: "[ {DAT_INCL: \"2/3/2012 16:45:9\", NUM_ORDE: 1, NUM_ATND: 734, NUM_ACAO: 2, NUM_RESU: 3}, {DAT_INCL: \"2/3/2012 16:45:10\", NUM_ORDE: 2, NUM_ATND: 734, NUM_ACAO: 4, NUM_RESU: 5}, {DAT_INCL: \"
DBXJSON
一起使用,处理字符串中包含的JsonArray时遇到问题。我得到的线索是:
"[
{DAT_INCL: \"2/3/2012 16:45:9\", NUM_ORDE: 1, NUM_ATND: 734, NUM_ACAO: 2, NUM_RESU: 3},
{DAT_INCL: \"2/3/2012 16:45:10\", NUM_ORDE: 2, NUM_ATND: 734, NUM_ACAO: 4, NUM_RESU: 5},
{DAT_INCL: \"2/3/2012 16:45:10\", NUM_ORDE: 3, NUM_ATND: 734, NUM_ACAO: 8, NUM_RESU: NULL}
]"
该死的引号。
无论我怎么努力,我都无法得到这个数组,没有任何ParseJSONValue
和疯狂的类型转换可以让数组走出这个引号的牢笼
也许你们中的一个拿到钥匙了
编辑:此字符串已经是一点类型转换的结果。如果有人对我如何提取这个字符串感兴趣,也许是为了找到一种更好的方法来最终取出数组(他真的很孤独和害怕),下面是我如何做到的:
最初,我有一对名为jObject的TJsonObject
{
"id": 0,
"data": "[{DAT_INCL: \"08/03/2012 10:07:08\", NUM_ORDE: 1, NUM_ATND: 1, NUM_ACAO: 2, NUM_RESU: 3},
{DAT_INCL: \"08/03/2012 10:07:09\", NUM_ORDE: 2, NUM_ATND: 1, NUM_ACAO: 4, NUM_RESU: 5},
{DAT_INCL: \"08/03/2012 10:07:09\", NUM_ORDE: 3, NUM_ATND: 1, NUM_ACAO: 8, NUM_RESU: NULL}]"
}
我继续提取相关的TJsonPair
,名为jPair:
jPair := jObject.Get(1);
这让我感到:
"data": "[{DAT_INCL: \"08/03/2012 10:07:08\", NUM_ORDE: 1, NUM_ATND: 1, NUM_ACAO: 2, NUM_RESU: 3},
{DAT_INCL: \"08/03/2012 10:07:09\", NUM_ORDE: 2, NUM_ATND: 1, NUM_ACAO: 4, NUM_RESU: 5},
{DAT_INCL: \"08/03/2012 10:07:09\", NUM_ORDE: 3, NUM_ATND: 1, NUM_ACAO: 8, NUM_RESU: NULL}]"
从中,我提取了名为sString的字符串
sString:= jPair.JsonValue.ToString;
这让我明白了问题开头的那根弦。到目前为止,这已经是最好的了。为什么需要jPair.JsonValue.ToString
?使用jPair.JsonValue作为TJsonArray
获取arrayYour的JSON字符串它似乎无效。@RRUZ是正确的,没有必要用反斜杠转义双引号(正确的JSON在我的答案中)可能重复@Teran,RRUZ是正确的,但不是因为您陈述的原因。JSON中确实需要转义引号,因为JSON字符串由引号分隔。在本例中,我们将(错误的)JSON保存在JSON字符串中。