当前位置: 首页 > 面试题库 >

在JQGrid中映射JSON数据

荀靖
2023-03-14
问题内容

我正在使用jqGrid 3.6.4和jquery 1.4.2。在我的示例中,我正在遵循json数据格式,我想将这些json数据映射到jqgrid的行中

{
"page": "1",
"total": 1,
"records": "6",
"rows": [
    {
        "head": {
            "student_name": "Mr S. Jack ",
            "year": 2007

        },
        "sub": [
            {
                "course_description": "Math ",
                "date": "22-04-2010",
                "number": 1,
                "time_of_add": "2:00",
                "day": "today"
            }
        ]

      }
]
}

我的jqgrid代码如下

jQuery("#"+subgrid_table_id).jqGrid({
url:"http://localhost/stud/beta/web/GetStud.php?sid="+sid,
dtatype: "json",
colNames: ['Stud Name','Year','Date'.'Number'],
colModel: [ {name:'Stud Name',index:'student_name', width:100, jsonmap:"student_name"},
{name:'Year',index:'year', width:100, jsonmap:"year"},
{name:'Date',index:'date', width:100, jsonmap:"date"},
{name:'Number',index:'number', width:100, jsonmap:"number"}
],
height:'100%',
jsonReader: { repeatitems : false, root:"head" },
});

所以现在的问题是因为我的数据(即student_name和year)在“
head”下,因此jqgrid可以找到这两个字段。同时其他两个列值,即“日期”和“数字”位于“ sub”下,即使是那些列,我也无法使用jqgrid进行映射

所以请帮助我如何在JQGrid中定位这些属性。

谢谢


问题答案:

首先,发布的代码有一些错误,例如dtatype: "json"而不是datatype: "json"。用“ },});”代替“
}});”在代码末尾和colNames: ['Stud Name','Year','Date'.'Number']代替colNames: ['Stud Name','Year','Date','Number']。修复此明显的错误后,您需要更改jsonmap值。这是您的主要问题。固定代码如下所示:

jQuery("#"+subgrid_table_id).jqGrid({
    ...
    datatype: 'json',
    colNames: ['Stud Name','Year','Date'.'Number'],
    colModel: [
        {name:'student_name', width:100, jsonmap:"head.student_name"},
        {name:'year', width:100, jsonmap:"head.year"},
        {name:'date', width:100, jsonmap:"sub.0.date"},
        {name:'number', width:100, jsonmap:"sub.0.number"}
    ],
    jsonReader: { repeatitems:false, root:"rows" }
});

您必须修复root为“ rows”并jsonmapJSON点表示法使用
(请参阅http://www.trirand.com/jqgridwiki/doku.php?id=wiki:retrieving_data#json_dot_notation)。我使用了一种奇怪的表示法,如“
sub.0.number”,因为sub.0.number在JavaScript中它与sub[0].number。现在可以使用了。

我建议您再考虑一下收到的JSON数据的结构。(请参阅我之前对您的评论):“
sub”元素确实是一个始终只有一个元素的数组,还是您想使用子网格?可能应该将数据从更改sub:[{"":"", ...}]sub:{"":"", ...}?您想用作行标识符吗?student_name?然后将其添加id: "head.student_name"jsonReader定义或将key: true属性添加到列的定义student_name。还是忘记了将其包含在JSON数据中?

还有最后一个建议。如果打开http://trirand.com/blog/jqgrid/jqgrid.html并在树的左侧打开分支“数据映射”
\“数据优化”,您将看到一个仅使用数组而不是命名的示例JSON中的元素。这样的数据将具有最小的大小,并且可以更快地从服务器传输到客户端。相反,您的数据具有一些根本不用的字段(例如“
course_description ”)。因此, 如果可以在服务器 代码中 进行任何更改,请 尝试优化数据传输速率。



 类似资料:
  • 目前我有一个DAO在做这样的事情: 而映射器则执行如下操作:(简化为该问题所需的内容) 作为JsonB字段存储在Aurora中。我读过一些关于注释的文章,但由于jdbi文档不清楚,所以我不确定这是否正确。 我映射结果的方式是“标准”方式吗?还是有更好/更有效的方式? 谢谢

  • 来自Facebook的JSON数据示例 运行上述文件将产生此错误。 我面临的问题是,如何将“1111111”值映射到类中的变量?如果我使用@JsonIgnoreProperties(ignoreUnknown=true),它将完全忽略所有的josn数据,因为第一个数据没有任何要映射的标记。我应该如何使用Jackson json将这种类型的json数据映射到Java?

  • 我需要在这里显示json响应

  • 注:内容翻译自官网文档 Language Guide (proto3) 中的 JSON Mapping 一节 Proto3支持JSON格式的标准编码, 让在系统之间分享数据变得容易. 编码在下面的表格中以type-by-type的基本原则进行描述. 如果一个值在json编码的数据中丢失或者它的值是null, 在被解析成protocol buffer时它将设置为对应的默认值.如果一个字段的值正好是p

  • 我做了一个教程,用world-50m.json文件在d3中显示地图。然而,我希望使用我自己的json文件。这是我的. json文件的结构。 “类型”:“FeatureCollection”,“features”:[{“type”:“Feature”,“properties”:{“FID”:0.000000},“geometry”:{“type”:“MultiPolygon”,“坐标”:[[[[14

  • 我使用flink动态分析json类型的数据,对keyby和给定的列求和,在我的mapFunction中,我将json转换为case类,但结果流没有在keyby函数中得到编译器,在线程“main”org.apache.flink.api.common.InvalidProgramException中得到错误。我的代码如下所示 我如何将json转换为case类或tuple?