Foxtable(狐表)用户栏目专家坐堂 → 将新地址组合成新的值写入材料附件字段 提示System.InvalidCastException: 无法将类型为“System.String”的对象强制转换为类型“Newtonsoft.Json.Linq.JToken”


  共有2508人关注过本帖树形打印复制链接

主题:将新地址组合成新的值写入材料附件字段 提示System.InvalidCastException: 无法将类型为“System.String”的对象强制转换为类型“Newtonsoft.Json.Linq.JToken”

帅哥哟,离线,有人找我吗?
cnsjroom
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
将新地址组合成新的值写入材料附件字段 提示System.InvalidCastException: 无法将类型为“System.String”的对象强制转换为类型“Newtonsoft.Json.Linq.JToken”  发帖心情 Post By:2023/11/14 17:25:00 [只看该作者]

材料附件值为:
[{"url":"/Abspath/9b6a93cc-d27c-4e93-a4ba-c0092627274b/9b6a93cc-d27c-4e93-a4ba-c0092627274b.pdf", "name":"EventCode.pdf"}]


代码:实现文件数据的抽取后,将新地址组合成新的值写入材料附件字段
红色部分报错
Dim cmd As New SQLCommand
cmd.Co nne ction Name = "主数据源" '记得设置数据源名称
cmd.CommandText = "S el ect * From {评查活动案件卷宗材料}"
Dim dt1 As DataTable = cmd.ExecuteReader
Dim ja1 As New JArray
Dim drs1 As List(Of DataRow) = dt1.Select("") 
For Each dr1 As DataRow In drs1
    Dim json As String = dr1("材料附件").ToString 
    Dim jsonObjects As JArray = JArray.Parse(json) 
    Dim firstJsonObject As JObject = jsonObjects(0) 
    Dim urlValue As String = firstJsonObject("url")
    Dim Values() As String
    Values = urlValue.split("/")
    For Index As Integer = 0 To Values.Length - 1
        '        If FileSys.DirectoryExists("D:\12+3\myfile\" & Values(2)) Then
        '            If FileSys.FileExists("D: \ 12 + 3 \ myfile \ " & Values(2) & " \ " & Values(3)) Then
        '            Else
        '                Output.Show("D:\12+3\myfile\" & Values(2) & "\" & Values(3))
        '                If FileSys.DirectoryExists("C:\MyFolder1\" & dr1("活动id") & "\" & dr1("案件id") & "\" & Values(2)) Then '如果目录C:\MyFolder存在
        '                    If FileSys.FileExists("C:\MyFolder1\" & dr1("活动id") & "\" & dr1("案件id") & "\" & Values(2) & "\" & Values(3)) Then
        '                        output.Show( Values(3) & "文件已经存在!")
        '                    Else
        '                        output.Show( Values(3) & "文件不存在或删除!")
        '                        FileSys.CopyFile("D:\12+3\myfile\" & Values(2) & "\" & Values(3), "C:\MyFolder1\" & dr1("活动id") & "\" & dr1("案件id") & "\" & Values(2) & "\" & Values(3), True) 
        '                    End If 
        '                Else
        '                    FileSys.CreateDirectory("C:\MyFolder1\" & dr1("活动id") & "\" & dr1("案件id"))
        '                    If FileSys.FileExists("C:\MyFolder1\" & dr1("活动id") & "" & dr1("案件id") & "\" & Values(2) & "\" & Values(3)) Then
        '                        output.Show( Values(3) & "文件已经存在!")
        '                    Else
        '                        output.Show( Values(3) & "文件不存在或删除!")
        '                        FileSys.CopyFile("D:\12+3\myfile\" & Values(2) & "\" & Values(3), "C:\MyFolder1\" & dr1("活动id") & "\" & dr1("案件id") & "\" & Values(2) & "\" & Values(3), True)
        
        '                    End If 
        '                End If
        Dim dt As DataTable = cmd.ExecuteReader
        Dim drs As List(Of DataRow) = dt1.Select("")
        Dim j As New JObject
        Dim ja As New JArray
        For Each dr As DataRow In drs
            Dim jo As New JObject
            jo("url") = "C:\MyFolder1\" & dr1("活动id") & "\" & dr1("案件id") & "\" & Values(2) & "\"
            jo("name") = Values(3)
            ja.Add(jo)
            Output.show(ja.ToString)
        Next
        '            End if
        '        Else      
        '        End If
    Next
Next


运行提示:
---------------------------
版本:2022.8.18.1
---------------------------
代码执行出错,错误信息:
System.InvalidCastException: 无法将类型为“System.String”的对象强制转换为类型“Newtonsoft.Json.Linq.JToken”。
   在 UserCode.Test()
---------------------------
确定   
---------------------------



 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/14 17:27:00 [只看该作者]

Dim urlValue As String = firstJsonObject("url").tostring()

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)Dim urlValue As String = firstJson...  发帖心情 Post By:2023/11/14 17:52:00 [只看该作者]

老师 现在能够进行值的josn了  但是红色部分会循环四*四   也就是每条数据会有重复的十六条产生,有没有办法去重呢?

Dim cmd As New SQLCommand
cmd.Connecti '记得设置数据源名称
cmd.Com mandText = "Se lect * From {评查活动案件卷宗材料}"
Dim dt1 As DataTable = cmd.ExecuteReader
Dim ja1 As New JArray
Dim drs1 As List(Of DataRow) = dt1.Select("") 
For Each dr1 As DataRow In drs1
    Dim json As String = dr1("材料附件").ToString 
    Dim jsonObjects As JArray = JArray.Parse(json) 
    Dim firstJsonObject As JObject = jsonObjects(0) 
    Dim urlValue As String = firstJsonObject("url").tostring()
    Dim Values() As String
    Values = urlValue.split("/")
    For Index As Integer = 0 To Values.Length - 1
        output.show(Values.Length)
        Output.Show(Values(0))
        Output.Show(Values(1))
        Output.Show(Values(2))
        Output.Show(Values(3))
        If Values(3) <> "" Then
            If FileSys.DirectoryExists("D:\12+3\myfile\" & Values(2)) Then
                If FileSys.FileExists("D: \ 12 + 3 \ myfile \ " & Values(2) & " \ " & Values(3)) Then
                Else
                    If FileSys.DirectoryExists("C:\MyFolder1\" & dr1("活动id") & "\" & dr1("案件id") & "\" & Values(2)) Then '如果目录C:\MyFolder存在
                        If FileSys.FileExists("C:\MyFolder1\" & dr1("活动id") & "\" & dr1("案件id") & "\" & Values(2) & "\" & Values(3)) Then
                        Else
                            output.Show( Values(3) & "文件不存在或删除!")
                            FileSys.CopyFile("D:\12+3\myfile\" & Values(2) & "\" & Values(3), "C:\MyFolder1\" & dr1("活动id") & "\" & dr1("案件id") & "\" & Values(2) & "\" & Values(3), True) 
                        End If 
                    Else
                        FileSys.CreateDirectory("C:\MyFolder1\" & dr1("活动id") & "\" & dr1("案件id"))
                        If FileSys.FileExists("C:\MyFolder1\" & dr1("活动id") & "" & dr1("案件id") & "\" & Values(2) & "\" & Values(3)) Then
                        Else
                            output.Show( Values(3) & "文件不存在或删除!")
                            FileSys.CopyFile("D:\12+3\myfile\" & Values(2) & "\" & Values(3), "C:\MyFolder1\" & dr1("活动id") & "\" & dr1("案件id") & "\" & Values(2) & "\" & Values(3), True)
                        End If 
                    End If
                    Dim j As New JObject
                    Dim ja As New JArray
                    Dim jo As New JObject
                    Dim ss As String = "C:\MyFolder1\" & dr1("活动id") & "\" & dr1("案件id") & "\" & Values(3)
                    SS = SS.Replace("\", "/")
                    jo("url") = ss
                    jo("name") = Values(3)
                    ja.Add(jo)
                    Output.show(ja.ToString) 
                End If
            Else 
            End If
        End If
    Next
Next


 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110581 积分:562801 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/14 20:11:00 [只看该作者]

既然循环多了,那就去掉一个循环啊,第2个for循环的目的是什么?

 回到顶部