标题:JSON与XML你不懂就OUT,真相是它们都是字符串
取消只看楼主
加菲猫的VFP
Rank: 2
等 级:禁止访问
帖 子:31
专家分:16
注 册:2021-11-24
结帖率:100%
 问题点数:0 回复次数:7 
JSON与XML你不懂就OUT,真相是它们都是字符串
JSON和XML这两个东西如果不弄清楚,BS,APP,中间层,小程序,公众号开发这道坎是万万迈不过去的,其实它们都是字符串,不信你接着往下看。

准备环境:
JSON解析:木瓜大侠的FOXJSON库
XML解析:系统一般自带
VFP SP2 7423


框架中自带FOXJSON,就不需要另外下载了。
如果想要这些文件,请关注公众号:加菲猫的VFP,发送“JSON”就可以获取下载链接。

JSON与XML的概念
JSON:
一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。可在不同平台之间进行数据交换。JSON采用兼容性很高的、完全独立于语言文本格式,同时也具备类似于C语言的习惯。
XML:
扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

请记住,他们就是字符串。

键值对表示法
JSON 使用键/值对的字符串来表示数据{键:值}
{"name":"张三","age":"20"}可以表示一个姓名,年龄的信息

XML用标签来表示
张三 20

vfp来创建JSON
1.方法一

cJson=[{"name":"张三","age","20"}]

2.方法二:使用木瓜的foxjson

oUser=Createobject("foxJson")
oUser.Append("name","张三")
oUser.Append("age",20)
?oUser.ToString()

VFP如何解析这个字符串?
cJosn='{"name":"张三","age":"20"} '
oJSON=foxjson_parse(cJson)
?oJson.item("name")
?oJson.item("age")

vfp来创建JSON数组
oUsers=Createobject("foxJson",{})
oUser=Createobject("foxJson")
oUser.Append("name","张三")
oUser.Append("age",20)
oUsers.Append(oUser)
oUser=Createobject("foxJson")
oUser.Append("name","李四")
oUser.Append("age",18)
oUsers.Append(oUser)
?oUser.toString()

VFP解析JSON数组
cJson='[{"name":"张三","age":20},{"name":"李四","age":8}] '
oUsers=foxjson_parse(cJson)
?"记录数",oUsers.count
?oUsers.item(1).item("name")
?oUsers.item(1).item("age")
?oUsers.item(2).item("name")
?oUsers.item(2).item("age")

vfp来创建xml
方式一
cXML=[<preson><name>张三</name><age>20</age></preson>]

方式二

oXMLDOC=Createobject("Microsoft.XMLDOM")
oPerson= oXMLDOC.createElement("person")
oName=oXMLDOC.createElement("name")
oName.Text="张三"
oAge=oXMLDOC.createElement("age")
oAge.Text=20
oPerson.appendchild(oName)
oPerson.appendchild(oAge)
?oPerson.XML

建立一个XML数组
*--建立一个XML数组

oXMLDOC=Createobject("Microsoft.XMLDOM")
oPersons=oXMLDOC.createElement("persons")
&&加个S表示多个
oPerson= oXMLDOC.createElement("person")
oName=oXMLDOC.createElement("name")
oName.Text="张三"
oAge=oXMLDOC.createElement("age")
oAge.Text=20
oPerson.appendchild(oName)
oPerson.appendchild(oAge)
oPersons.appendchild(oPerson)
oPerson= oXMLDOC.createElement("person")
oName=oXMLDOC.createElement("name")
oName.Text="李四"
oAge=oXMLDOC.createElement("age")
oAge.Text=25
oPerson.appendchild(oName)
oPerson.appendchild(oAge)
oPersons.appendchild(oPerson)


VFP解析XML
TEXT TO lcXML NOSHOW TEXTMERGE
张三20
ENDTEXT
oXMLDOC=Createobject("Microsoft.XMLDOM")
oXMLDOC.loadxml(lcXML )
?"共有子标签:",oxmldoc.documentElement.childNodes.length
oxmlHeader=oxmldoc.documentElement.childNodes.Item(0)
&&childNodes里有两个标签 分别是name ,age
?oxmlHeader.text &&里面的值
?oxmlHeader.xml &&连同标签
?oxmlHeader.nodename &&标签名
通过childNodes 一级一级往下
XML 是无限多级的
上级的childNodes 存放下级标签有多少个,分别是什么





xml是一颗倒置的树,如果每一个节点都要输出,那得用编历算法(我研究完就忘记了,递归算法)



oNode=getElementsByTagName("name")

通过xmldoc的getElementsByTagName方法可以将所有同名的标签全部抓出来变成一个集合

使用另一个大招getElementsByTagName
TEXT TO lcXML NOSHOW TEXTMERGE
<preson><name>张三</name><age>20</age></preson>
ENDTEXT
oXMLDOC=Createobject("Microsoft.XMLDOM")
oXMLDOC.loadxml(lcXML )
oXMLHeaders=oXMLDOC.getElementsByTagName("name")
?"标签集合共有",oxmlHeaders.length
?oxmlHeaders.item(0).text &&里面的值
?oxmlHeaders.item(0).xml &&连同标签
?oxmlHeaders.item(0).nodename &&标签名


搜索更多相关主题的帖子: age item 标签 name XML 
2021-11-30 09:26
加菲猫的VFP
Rank: 2
等 级:禁止访问
帖 子:31
专家分:16
注 册:2021-11-24
得分:0 
回复 7楼 foxfans
快和慢都是相对的,先解决是否可用的问题,再解决好用的问题,再解决速度的问题。

公众号:加菲猫的VFP
主页:http://www.
VFP搞定BS、CS、APP、公众号、中间层
2021-12-02 08:27
加菲猫的VFP
Rank: 2
等 级:禁止访问
帖 子:31
专家分:16
注 册:2021-11-24
得分:0 
回复 10楼 吹水佬
VFP的开发效率和运行效率完全可以满足中小型应用的需要了。如果你非要拉出淘宝之类的,很遗憾,淘宝不是单一语言,单一架构。
任何商业的系统都是进化而来的。

VFP写的系统也是如此。

很遗憾我就是那个很笨的人。有所谓的控件,扩展,类也都是人做成的。

只不过原来VFP没有人做,现在有人做了,好用了,就足够了。 


公众号:加菲猫的VFP
主页:http://www.
VFP搞定BS、CS、APP、公众号、中间层
2021-12-02 10:24
加菲猫的VFP
Rank: 2
等 级:禁止访问
帖 子:31
专家分:16
注 册:2021-11-24
得分:0 
人为什么要局限于自己的看法呢?有那么多狐友,有着自己软件运行在这个地球上,如果可以很轻松地进入BS的世界,何乐而不为,PHP不也是这样,当年ASP不也是这样。

用VFP开发BS就能给客户带来损失了,这明显就是偷换概念,用其它语言开发BS不会给客户带来损失了吗?

我见过用C#写得像屎一样的代码,还见过许多花费了几十万,几百万的JAVA .NET的系统死了。

我也见过很多VFP写的系统,还在用力的生活着。

另外要以发展的眼光看问题,而不是局限这里快一点,那里快一点。

对于绝大数狐友来说,应用的规模,还达不到需要要算法比拼优化的情况。

对了,JS开发后端也不是被看不起,人家也越发蓬勃成长了起来。大人,时代变了。 用VFP,但不局限于VFP,用VFP混合一切不香吗?

VFP遇到的问题,你换个语言,换个工具就不会遇见了吗?

牛逼的语言,是语言牛逼啊,并不是人牛逼啊。

[此贴子已经被作者于2021-12-2 10:32编辑过]


公众号:加菲猫的VFP
主页:http://www.
VFP搞定BS、CS、APP、公众号、中间层
2021-12-02 10:29
加菲猫的VFP
Rank: 2
等 级:禁止访问
帖 子:31
专家分:16
注 册:2021-11-24
得分:0 
回复 16楼 sostemp
难道我发的东西不是解决实际的问题吗?

公众号:加菲猫的VFP
主页:http://www.
VFP搞定BS、CS、APP、公众号、中间层
2021-12-02 11:06
加菲猫的VFP
Rank: 2
等 级:禁止访问
帖 子:31
专家分:16
注 册:2021-11-24
得分:0 
回复 15楼 foxfans
首先要说明的是:辨论请在同一议题下,
这是你的原文:
按你这么说,客户的死活,关产品什么关系,我做的产品再烂收完钱,出了事也不管我的事,人吃了食品中毒关厂家什么关系。这是什么逻辑,你做的是产品,并非玩具。

第一:你哪句话看出我说过客户的死活,是由产品引发的?
第二:你哪句话看出了事不管我的事?
第三:你哪句话看我说了,人吃了食品中毒关厂家什么关系?

搞技术的人有点逻辑感好不?

连辨论的论点都不知道哪里?那是不是先去学习一下找论点,然后找论据。

公众号:加菲猫的VFP
主页:http://www.
VFP搞定BS、CS、APP、公众号、中间层
2021-12-02 11:09
加菲猫的VFP
Rank: 2
等 级:禁止访问
帖 子:31
专家分:16
注 册:2021-11-24
得分:0 
回复 17楼 吹水佬
感谢版主的肯定。

我只做了一点微小的工作,理解我的人也很多,因为有他们,我也做出VFP界的第一个社群。

不理解我的人也很多,说我掉进了钱眼里面。哈哈哈。

看怎么理解, 免费是人情,收费是本份, 凭劳动所得,堂堂正正。

公众号:加菲猫的VFP
主页:http://www.
VFP搞定BS、CS、APP、公众号、中间层
2021-12-02 11:12
加菲猫的VFP
Rank: 2
等 级:禁止访问
帖 子:31
专家分:16
注 册:2021-11-24
得分:0 
电影中《师父》,廖凡说:招式我展示出来了,能吸收多少全看缘份。

有些地方看不懂,自然是某些知识还没有准备倒位,有些东西,即使不用我框架也是可以做到的,我也有提XMLHTTP,我也有讲加解密的FLL哪里下载。

这些干货你看不懂啊,还是看不见呢?那是为什么呢?可以细究一下。

[此贴子已经被作者于2021-12-2 11:43编辑过]


公众号:加菲猫的VFP
主页:http://www.
VFP搞定BS、CS、APP、公众号、中间层
2021-12-02 11:25



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




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

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