以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- jarray的二维数组如何操作? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=190399) |
-- 作者:lur320 -- 发布时间:2024/2/4 14:57:00 -- jarray的二维数组如何操作? Dim data() As JArray For Each famil As jvalue In familys
If famil.ToString = dr("unfamily") Then data(familys.IndexOf(famil)).Add(dr("盒数")) 这里会出错。感觉的二维Jarry的用法错了,如何改? Else data(familys.IndexOf(famil)).Add(0) End If Next |
-- 作者:有点蓝 -- 发布时间:2024/2/4 15:04:00 -- json源数据是怎么样的,发上来看看 |
-- 作者:lur320 -- 发布时间:2024/2/4 15:07:00 -- 源数据来自于表。 For Each dr As DataRow In dt.DataRows Dim dr1 As DataRow = dt2.find("time=\'" & dr("time") & "\' and unfamily=\'" & dr("unfamily") & "\'") If dr1 IsNot Nothing Then Dim drnew As DataRow = DataTables("leveling").AddNew drnew("time") = dr("time") drnew("盒数") = dr("盒数") - dr1("盒数") drnew("unfamily") = dr("unfamily") Else Dim drnew As DataRow = DataTables("leveling").AddNew drnew("time") = dr("time") drnew("盒数") = dr("盒数") drnew("unfamily") = dr("unfamily") End If Next For Each dr As DataRow In dt2.DataRows Dim dr1 As DataRow = dt.find("time=\'" & dr("time") & "\' and unfamily=\'" & dr("unfamily") & "\'") If dr1 Is Nothing Then Dim drnew As DataRow = DataTables("leveling").AddNew drnew("time") = dr("time") drnew("盒数") = 0 - dr("盒数") drnew("unfamily") = dr("unfamily") End If Next 这里对表格进行合并。 DataTables("leveling").save For Each famil As String In DataTables("leveling").GetValues("unfamily") familys.Add(famil) Next 获取所有产品族 For Each dr As DataRow In DataTables("leveling").Select("", "time") If times.Contains(format(dr("time"), "d")) = False Then times.add(format(dr("time"), "d")) End If 加入时间轴 For Each famil As jvalue In familys If famil.ToString = dr("unfamily") Then data(familys.IndexOf(famil)).Add(dr("盒数")) Else MessageBox.Show(familys.IndexOf(famil)) 这里第一次会显示0,然后报错 未将对象引用设置到对象的实例。 data(familys.IndexOf(famil)).Add(0) End If 将数量加入对应数组。 Next Next datas.Add(data) jo("number") = datas jo("date") = times jo("familys") = familys MessageBox.Show(1) [此贴子已经被作者于2024/2/4 15:10:45编辑过]
|
-- 作者:有点蓝 -- 发布时间:2024/2/4 15:10:00 -- 表结构和数据是怎么样的?josn要什么结果? |
-- 作者:lur320 -- 发布时间:2024/2/4 15:16:00 -- 表结构如图, 要的结果是: jo:"date":[xxx,xxx,xxx], "familys":[1,2,3],"numbers":{[0,0,0,1],[0,1,0,0],[1,2,0,0]} 就是不同产品族的数量。numbers是一个二维数组。 [此贴子已经被作者于2024/2/4 15:16:57编辑过]
|
-- 作者:有点蓝 -- 发布时间:2024/2/4 15:25:00 -- json和表数据对不上呀。麻烦根据5楼的数据,认真手工填一下json的真正需要的结果,发上来看看 |
-- 作者:lur320 -- 发布时间:2024/2/4 15:37:00 -- jo:"date":[2023-12-10,2023-12-12,2023-12-21,2023-12-22], "familys":[其他,西可新],"numbers":{[157370,161540,0,0],[0,0,94990,95370]} |
-- 作者:有点蓝 -- 发布时间:2024/2/4 15:55:00 -- 没看懂生成json的规则。 1、date数组是所有time列的数据,还是只是这4个? 2、familys数组是unfamily列所有不重复的值? 3、numbers数据根据什么规则生成的? 再说下面这种格式才是二维数组呀 "numbers":[[157370,161540,0,0],[0,0,94990,95370]]
|
-- 作者:lur320 -- 发布时间:2024/2/4 16:38:00 -- 搞定。 Dim familys, times, datas As New jarray For Each famil As jvalue In familys
Dim data As New JArray For Each dat As jvalue In times Dim dr As DataRow = DataTables("leveling").find("time=#" & dat.tostring & "# and unfamily=\'" & famil.ToString & "\'") If dr IsNot Nothing Then data.Add(dr("盒数")) Else data.Add(0) End If Next datas.Add(data) 这里把每一个数量赋值到datas里面,dates就成为了二维数组。 Next |