以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  生成JSON,为什么斜杠会变成双斜杠  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=176045)

--  作者:vimin
--  发布时间:2022/3/28 16:53:00
--  生成JSON,为什么斜杠会变成双斜杠
简单的测试代码:
Dim jo As new JObject
Dim ja As new JArray
Dim wjm As String = "c:\\web\\images\\upload"
ja.Add(wjm)
jo("list") = ja
Output.Show(jo.ToString)
输出的为什么是:
{
  "list": [
    "c:\\\\web\\\\images\\\\upload"
  ]
}

我是哪里写错了吗,为什么会变成双斜杠,该怎么解决?

--  作者:有点蓝
--  发布时间:2022/3/28 17:26:00
--  
使用上会有做什么问题?变成双斜杠是正常的,解析的时候会自动转换为1个斜杆的。如果没有自动转换,自己替换为1个斜杆也可以呀
--  作者:vimin
--  发布时间:2022/3/28 17:50:00
--  
就是解析的时候没有自动转换为1个斜杠,返回了500的错误
--  作者:vimin
--  发布时间:2022/3/28 17:51:00
--  
这个就只能在前端处理一下,把双斜杠替换成单斜杠?有在后端解决这个问题的办法吗
--  作者:lgzhao
--  发布时间:2022/3/28 18:19:00
--  
我测试了一下。同样用狐表来生成和解析。

当wjm按jarray时,解析之后,没有返回正确的格式。
当wjm直接按字符串赋给jo(list)时,解析后恢复成正确的了。

结论:foxtable jarray的解析和生成存在匹配问题。
foxtable是不是该升级newton的版本了?
=================
‘ 附:按下面方法放弃jarray,则可以正确解析。
Dim jo As new JObject
Dim ja As new JArray
Dim wjm As String = "c:\\web\\images\\upload"
 
jo("list") = wjm
Output.Show(jo.ToString)


Dim json As String = jo.ToString
Dim jo1 As JObject = JObject.Parse(json)
Output.Show(jo1("list").Tostring)

[此贴子已经被作者于2022/3/28 18:22:24编辑过]

--  作者:vimin
--  发布时间:2022/3/28 18:24:00
--  
谢谢。
因为我这个有可能是多张图片,所以我是用数组来保存的。
想让前端显示多张图片

--  作者:有点蓝
--  发布时间:2022/3/28 20:09:00
--  
Foxtable的json解析没有任何问题,newton的版本也没有任何问题。

您觉得有问题是因为解析的方法不正确
Dim jo As new JObject
Dim ja As new JArray
Dim wjm As String = "c:\\web\\images\\upload"
ja.Add(wjm)
jo("list") = ja
Output.Show(jo.ToString)

Dim json As String = jo.ToString
Dim jo1 As JObject = JObject.Parse(json)

//注意下面2个输出的区别,第一个输出的仍然是json格式字符串,第二个才是输出的内容
Output.Show(jo1("list").Tostring)
Output.Show(jo1("list")(0).Tostring)


--  作者:vimin
--  发布时间:2022/3/28 21:03:00
--  
谢谢老师!
不好意思,原来是我自己前端代码写错了。
解析没问题的