标题:请教,VFP有没有JSON转成数组的方法
只看楼主
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:205
专家分:31
注 册:2010-12-23
结帖率:56.36%
已结贴  问题点数:20 回复次数:9 
请教,VFP有没有JSON转成数组的方法
比如:[{"count":0,"diagnosisId":29212,"diagnosticIcdCode":"","diagnosticName":"36、 46可疑龋","discount":0},{"count":0,"diagnosisId":54077,"diagnosticIcdCode":"","diagnosticName":"就你那几句话","discount":0}]  如何转到数组?

[此贴子已经被作者于2018-12-24 11:51编辑过]

搜索更多相关主题的帖子: VFP 转成 数组 方法 count 
2018-12-24 11:48
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:20 
要转换那些内容,请举例说明

坚守VFP最后的阵地
2018-12-24 12:05
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
VFP9代码
CLEAR
TEXT TO cStr NOSHOW TEXTMERGE
[{"count":0,"diagnosisId":29212,"diagnosticIcdCode":"","diagnosticName":"36、 46可疑龋","discount":0},{"count":0,"diagnosisId":54077,"diagnosticIcdCode":"","diagnosticName":"就你那几句话","discount":0}]
ENDTEXT
cStr = CHRTRAN(cStr, '["]', "")
FOR i = 1 TO OCCURS("{", cStr)
    lcStr = ALINES(aa, STREXTRACT(cStr, "{", "}", I), ",")
    LOCAL bb[ALEN(aa)]
    *LIST MEMORY LIKE aa
    FOR ii = 1 TO ALEN(aa, 1)
        bb[ii] = GETWORDNUM(aa[ii], 2, ":")
    ENDFOR
    LIST MEMORY LIKE bb
ENDFOR



[此贴子已经被作者于2018-12-24 12:26编辑过]


坚守VFP最后的阵地
2018-12-24 12:25
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:205
专家分:31
注 册:2010-12-23
得分:0 
回复 3楼 sdta
你好,你这个方法可以的,有没有直接用JSON的方法来得到的,类似下面这样的,我不会写
local loJs as MSScriptControl.ScriptControl

Local loJs, JsonIo, JsonT
loJs = CreateObject("MSScriptControl.ScriptControl")
loJs.Language = "JavaScript"
loJs.AddCode('var jsonio = {get:function(o, p){return eval(p);}}')
JsonIo = loJs.CodeObject.jsonio
lma1=ALLTRIM(thisform.edit1.Value)

loJs.AddCode('var json1 = '+lma1)
Json1 = loJs.CodeObject.json1

lma2=Json1.length
FOR i=1 TO lma2
    WAIT WINDOW JsonIo.get(Json1, "o.[1]")
2018-12-24 15:11
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
以下是引用laibinhua在2018-12-24 15:11:58的发言:

你好,你这个方法可以的,有没有直接用JSON的方法来得到的,类似下面这样的,我不会写
local loJs as MSScriptControl.ScriptControl
 
Local loJs, JsonIo, JsonT
loJs = CreateObject("MSScriptControl.ScriptControl")
loJs.Language = "JavaScript"
loJs.AddCode('var jsonio = {get:function(o, p){return eval(p);}}')
JsonIo = loJs.CodeObject.jsonio
lma1=ALLTRIM(thisform.edit1.Value)
 
loJs.AddCode('var json1 = '+lma1)
Json1 = loJs.CodeObject.json1
 
lma2=Json1.length
FOR i=1 TO lma2
    WAIT WINDOW JsonIo.get(Json1, "o.[1]")
能解决问题的方法就是好方法。不要好高骛远。

坚守VFP最后的阵地
2018-12-26 12:02
laibinhua
Rank: 2
等 级:论坛游民
威 望:1
帖 子:205
专家分:31
注 册:2010-12-23
得分:0 
回复 5楼 sdta
谢谢!
2018-12-26 17:29
xmwld
Rank: 2
等 级:论坛游民
帖 子:16
专家分:14
注 册:2010-11-13
得分:0 
版主果然厉害
2019-01-04 17:26
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
得分:0 
分享一个VFP处理JSON的类:
使用例子:
* Examples:
*
* set procedure json additive
* oPerson = json_decode(' { "name":"Ignacio" , "lastname":"Gutierrez", "age":33 } ')
* if not empty(json_getErrorMsg())
*    ? 'Error in decode:'+json_getErrorMsg())
*    return
* endif
* ? oPerson.get('name') , oPerson.get('lastname')
*
*
* oJson = newobject('json','json.prg')
* oCustomer = oJson.decode( ' { "name":"Ignacio" , "lastname":"Gutierrez", "age":33 } ')
* ? oJson.encode(oCustomer)
* ? oCustomer.get('name')
* ? oCustomer.get('lastname')
*

* obj = oJson.decode('{"jsonrpc":"1.0", "id":1, "method":"sumArray", "params":[3.1415,2.14,10],"version":1.0}')
* ? obj.get('jsonrpc'), obj._jsonrpc
* ? obj.get('id'), obj._id
* ? obj.get('method'), obj._method
* ? obj._Params.array[1], obj._Params.get(1)

json.rar (4.37 KB)
2019-01-07 14:12
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 

坚守VFP最后的阵地
2021-04-17 10:03
sam_jiang
Rank: 8Rank: 8
等 级:贵宾
威 望:10
帖 子:542
专家分:781
注 册:2021-10-13
得分:0 
回复 8楼 kiff
好东西
2022-02-16 16:59



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-492243-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.097224 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved