以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  josn解析  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=184929)

--  作者:ljh29206
--  发布时间:2023/1/17 15:05:00
--  josn解析
 
JSON内容  为 :

{"dowhat":"ycldnhq","tablename":"ycldd","rownumber":"YCLDDTM:YCLDD-2301170000"}

请教 json解析

问题1:
输入进foxtable 的字符串是 以上内容 , 引号都为双引号,   这个能否直接解析

Dim jo_in As JObject = JObject.Parse(str)
Dim Dowhat As String  = jo_in("dowhat").ToString()
Dim tablename As String = jo_in("tablename").ToString()
Dim rownumber As String = jo_in("rownumber").ToString()
这种方式报错。

问题2:
如果输出一个JSON

能否全部都用 双引号?
[此贴子已经被作者于2023/1/17 15:14:38编辑过]

--  作者:有点蓝
--  发布时间:2023/1/17 15:15:00
--  
提示什么错误?请贴出完整代码。
--  作者:ljh29206
--  发布时间:2023/1/17 15:24:00
--  

 Dim str As String =  args(0)

MessageBox.Show(Str)
Dim jo_in As JObject = JObject.Parse(str)
Dim Dowhat As String  = jo_in("dowhat").ToString()
Dim tablename As String = jo_in("tablename").ToString()
Dim rownumber As String = jo_in("rownumber").ToString()

文本为  {"dowhat":"ycldnhq","tablename":"ycldd","rownumber":"YCLDDTM:YCLDD-2301170000"}

代码如上

图片请看下

图片点击可在新窗口打开查看此主题相关图片如下:捕获1.jpg
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:捕获2.jpg
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:捕获3.jpg
图片点击可在新窗口打开查看


我把双引号强制转换为单引号 再解析 也报同样的错误!

[此贴子已经被作者于2023/1/17 15:32:22编辑过]

--  作者:有点蓝
--  发布时间:2023/1/17 15:34:00
--  
我测试没有问题啊,sqlweb函数只有这几句代码?
--  作者:ljh29206
--  发布时间:2023/1/17 15:36:00
--  
 Dim str As String =  args(0)

str = str.Replace("""","\'")
MessageBox.Show(str)

Dim jo_in As JObject = JObject.Parse(str)
Dim Dowhat As String  = jo_in("dowhat").ToString()
Dim tablename As String = jo_in("tablename").ToString()
Dim rownumber As String = jo_in("rownumber").ToString()



If Dowhat = "ycldnhq" Then
    
    Dim drf As DataRow = DataTables("YW_原材料订单").SQLFind("二维码 = \'" & rownumber & "\'")
    Dim rowguid As String
    If drf IsNot Nothing Then
        rowguid = drf("guid")
        
        Dim jo As New JObject
        Dim ja As New JArray
        jo("主表guid") = drf("guid")
        jo("供应商") = drf("供应商")
        jo("计划纳入日期") = drf("计划纳入日期")
        jo("备注") = drf("备注")
        jo("明细") =  ja

        Dim drs As List(of DataRow)
        drs=  DataTables("YW_原材料订单明细").SQLSelect("主表guid = \'" & rowguid & "\'")
        For i As Integer = 0 To drs.Count -1
            ja.Add(New JObject) \'给数组添加两个对象成员
            ja(i)("guid") = drs(i)("guid")
            ja(i)("产品品番") = drs(i)("产品品番")
            ja(i)("收容数") = drs(i)("收容数")
            ja(i)("单位") = drs(i)("单位")
            ja(i)("计划纳入数量") = drs(i)("计划纳入数量")
            ja(i)("计划纳入总数量") = drs(i)("计划纳入总数量")
        Next
        MessageBox.Show(jo.ToString)
        Return jo.ToString
    End If
End If
--  作者:有点蓝
--  发布时间:2023/1/17 15:41:00
--  
所以早就让您把完整代码发上来咯!

jo("主表guid") = drf("guid")
改为
jo("主表guid") = drf("guid").tostring
或者
jo("主表guid") = cstr(drf("guid"))

其它地方也一样的改