| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 610 人关注过本帖
标题:请教,VFP有没有JSON转成数组的方法
只看楼主 加入收藏
laibinhua
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2010-12-23
结帖率:16.67%
  已结贴   问题点数:20  回复次数:7   
请教,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编辑过]

2018-12-24 11:48
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:182
帖 子:7547
专家分:18232
注 册:2012-2-5
  得分:20 
要转换那些内容,请举例说明

坚守VFP最后的阵地
2018-12-24 12:05
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:182
帖 子:7547
专家分:18232
注 册: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: 1
等 级:新手上路
帖 子:26
专家分:0
注 册: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
等 级:版主
威 望:182
帖 子:7547
专家分:18232
注 册: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: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2010-12-23
  得分:0 
回复 5楼 sdta
谢谢!
2018-12-26 17:29
xmwld
Rank: 1
等 级:新手上路
帖 子:12
专家分:7
注 册:2010-11-13
  得分:0 
版主果然厉害
2019-01-04 17:26
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:44
帖 子:747
专家分:2491
注 册: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)

附件: 您没有浏览附件的权限,请 登录注册
2019-01-07 14:12







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

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