Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >用JavaScriptSerializer反序列化JSON

用JavaScriptSerializer反序列化JSON
EN

Stack Overflow用户
提问于 2011-05-09 05:19:55
回答 3查看 15.7K关注 0票数 4

我构建了一个导航树,并使用这个函数将结构保存在一个数组中。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
function parseTree(html) {
   var nodes = [];
   html.parent().children("div").each(function () {
      var subtree = $(this).children("div");
      var item = $(this).find(">span");
      if (subtree.size() > 0)
          nodes.push([item.attr("data-pId"), item.attr("data-id"), parseTree(subtree)]);
      else
          nodes.push(item.attr("data-pId"), item.attr("data-id"));
  });
  return nodes;
}

然后我将数据序列化

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var tree = $.toJSON(parseTree($("#MyTree").children("div")));

得到这个数组

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[
    ["881150024","881150024",
        [
         "994441819","881150024",
         "214494418","881150024"
        ]
    ],
    ["-256163399","-256163399",
        [
            "977082012","-256163399",
            "-492694206","-256163399",
            [
                "1706814966","-256163399",
                    ["-26481618","-256163399"]
            ]
        ]
    ]
]

并通过ajax发送

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
             $.ajax({
                url: "Editor/SerializeTree",
                type: "POST",
                data: { tree: tree },
                success: function (result) {
                    alert("OK");
                }
            });

问题:如何用JavaScriptSerializer在C#?中反序列化此JSON

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-09 05:48:52

这里似乎有一个节点数组,每个节点都有一组字符串或另一个节点数组,对吗?您可以做的第一件事就是将它反序列化为如下所示的List<object>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
string treeData = "..."; // The JSON data from the POST
JavaScriptSerializer js = new JavaScriptSerializer();
List<object> tree = js.Deserialize <List<object>>(treeData);

这将将您的JSON转换成一个对象列表,但是您需要手动确定什么是什么(如果每个对象是一个字符串还是另一个List<object>)。

不过,通常情况下,使用某种类或结构来表示给序列化程序的数据的“模式”是有帮助的,但这比上面的工作要多一些。

在这个实例中,您需要输入数据作为一个实际的JSON对象,而不仅仅是一个数组。假设您有这个JSON (基于上面的数据):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{id: "root", children: [
  {id: "881150024"},
  {id: "881150024", children: [
    {id: "994441819"}, {id: "881150024"}]},
    {id: "-256163399"},
    {id: "-256163399", children: [            
    {id: "-492694206"},
      {id: "-256163399", children: [
        {id: "1706814966"},
        {id: "-256163399", children: [
          {id: "-26481618"}, {id: "-256163399"}]}
]}]}]}

如果你有这样的课:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Node
{
  public String id;
  public List<Node> children;
}

然后,您可以这样做:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
string treeData = "..."; // The JSON data from the POST
JavaScriptSerializer js = new JavaScriptSerializer();
Node root = js.Deserialize<Node>(treeData);

这将更容易在代码中使用。

票数 10
EN

Stack Overflow用户

发布于 2011-05-09 06:11:03

考虑到@_rusty的回答。

在MVC3中,可以将JSON数据转化为操作,因此控制器代码非常简单

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[HttpPost]
public void SerializeTree(IList<Node> tree)
{
    // tree is deserialized JSON here
}
票数 1
EN

Stack Overflow用户

发布于 2014-03-20 20:22:39

对于那些仍然到处使用VB.Net的少数几个人来说:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Imports System.Web.Script.Serialization

'wsvcResponse<string> contains the following JSON object: { "foo":"bar", "foo2": { "bar2": "foobar" } }
Dim jsSerializer As New JavaScriptSerializer()
Dim jsonObject As List(Of Object) = jsSerializer.Deserialize(Of Object)(wsvcResponse)
Dim foo As String = jsonObject("foo").ToString  ' "bar"
Dim bar2 As String = jsonObject("foo2")("bar2").ToString ' "foobar"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5937450

复制
相关文章
JavaScriptSerializer 序列化json 时间格式
 利用JavaScriptSerializer 序列化json 时间格式,得到的DateTime值值显示为“/Date(700000+0500)/”形式的JSON字符串,显然要进行转换 1.利用字符串直接替换 Model m = new Model { Id = 1, Dt = DateTime.Now }; JavaScriptSerializer js = new JavaScriptSerializer(); string str = js.Serialize(m);
欢醉
2018/01/22
1.5K0
CA2321:请勿使用 SimpleTypeResolver 对 JavaScriptSerializer 进行反序列化
使用 System.Web.Script.Serialization.SimpleTypeResolver 初始化后,调用或引用了 System.Web.Script.Serialization.JavaScriptSerializer 反序列化方法。
用户4268038
2022/02/20
1.3K0
MVC中JSON字符长度超出限制的异常处理
使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength 属性设置的值。
sherlock99
2018/07/24
3.6K0
Golang -- Json序列化
在使用Go Struct的Json Marshal的时候,通过Json To Go Struct工具可以生成结构体,但是当在结构体中只对部分属性赋值的时候,Marshal后的字符串与预期不符,如下所示:
None_Ling
2021/11/24
7650
Python json序列化
Python内置的json模块提供了非常完善的对象到JSON格式的转换。废话不多说,我们先看看如何把Python对象变成一个JSON:
py3study
2020/01/16
2.2K0
ajax实现看视频无刷新评论
学会使用开发者工具找错误,同时使用$.ajax()的好处,可以看到错误的出在那里
静心物语313
2020/03/24
2.5K0
ajax实现看视频无刷新评论
Python序列化-json
Python 序列化是将 Python 对象转换为可以存储或传输的格式,如 JSON 或二进制格式。
玖叁叁
2023/04/18
7070
了解ASP.NET MVC几种ActionResult的本质:EmptyResult & ContentResult
在之前的两篇文章(《EmptyResult & ContentResult》和《FileResult》)我们剖析了EmptyResult、ContentResult和FileResult这三种Acti
蒋金楠
2018/01/15
1.7K0
了解ASP.NET MVC几种ActionResult的本质:EmptyResult & ContentResult
WebAPI返回JSON
web api写api接口时默认返回的是把你的对象序列化后以XML形式返回,那么怎样才能让其返回为json呢,下面就介绍两种方法:  方法一:(改配置法)  找到Global.asax文件,在Application_Start()方法中添加一句:
莫问今朝
2018/08/31
3.5K0
详解C# 序列化和反序列化
今天我利用这篇文章给大家讲解一下 C# 中的序列化与反序列化。这两个概念我们在开发中经常用到,但是我们绝大部分只用到了其中的一部分,剩下的部分很多开发人员并不清楚,伸着可以说是不知道。因此我希望通过这篇文章能让各位对序列化和反序列化的知识有更进一步的掌握。废话不多说开始进入正题。
喵叔
2020/09/08
4.3K0
详解C# 序列化和反序列化
C#编写上位机使用UDP给单片机发送Json格式数据
很多时候,我们想要通过上位机给我们的单片机下发命令,是我们能够控制单片机进行一些操作。而通常我们有几种方式,分别是串口传输、蓝牙传输、UDP和TCP这类WIFI传输等。 在本文就用C#编写上位机使用UDP给单片机发送Json格式数据,进行数据的传输。
跋扈洋
2022/03/29
9890
C#编写上位机使用UDP给单片机发送Json格式数据
[C#]JSON反序列化对象--解析JSON文本
This sample deserializes JSON to an object.
科控物联
2022/06/13
1.2K0
[C#]JSON反序列化对象--解析JSON文本
了解ASP.NET MVC几种ActionResult的本质:JavaScriptResult & JsonResult
在之前的两篇文章(《EmptyResult & ContentResult》和《FileResult》)我们剖析了EmptyResult、ContentResult和FileResult这三种Acti
蒋金楠
2018/01/15
1.7K0
了解ASP.NET MVC几种ActionResult的本质:JavaScriptResult & JsonResult
python序列化:json,pickl
什么是序列化,把程序中的对象或者变量,从内存中转换为可存储或可传输的过程称为序列化。在 Python 中,这个过程称为 pickling,在其他语言中也被称为 serialization,marshalling,flattening 等。程序中的对象(或者变量)在序列化之后,就可以直接存放到存储设备上,或者直接发送到网络上进行传输。
py3study
2020/01/14
9350
JSON序列化接口,JsonSerializable
php中操作json的函数有json_encode(),json_decode()
宣言言言
2019/12/18
1.7K0
在MVC中使用Json.Net序列化和反序列化Json对象
在.Net的MVC开发中,经常会使用到Json对象,于是,系统提供了JsonResult这个对象,其本质是调用.Net系统自带的Json序列化类JavaScriptSerializer对数据对象进行序列化。但是这个系统自带的Json序列化对象方法没有Json.Net好用,于是打算有些时候用Json.Net替代默认的实现。
深蓝studyzy
2022/06/16
1.2K0
【Flutter】JSON 模型转换 ( JSON 序列化工具 | JSON 手动序列化 | 根据 JSON 编写 Dart 模型类 | 在线自动根据 JSON 转换 Dart 类 )
JSON 格式比较简单的话 , 使用自带的 dart:convert 包 , 手动进行 JSON 的序列化与反序列化的操作即可 ;
韩曙亮
2023/03/29
2.7K0
【Flutter】JSON 模型转换 ( JSON 序列化工具 | JSON 手动序列化 | 根据 JSON 编写 Dart 模型类 | 在线自动根据 JSON 转换 Dart 类 )
详解电子表格中的json数据:序列化与反序列化
当下应用开发常见的B/S架构之下,我们会遇到很多需要进行前后端数据传输的场景。而在这个传输的过程中,数据通过何种格式传输、方式是否迅速便捷、书写方式是否简单易学,都成为了程序员在开发时要考量的问题。
葡萄城控件
2021/11/18
1.6K0
详解电子表格中的json数据:序列化与反序列化
Java-json序列化和反序列化
java开发中经常会遇到json的序列化与反序列化,常用的json序列化工具有阿里的Fastjson、spring mvc内置的Jackson、还有就是我们接下来要说的谷歌的Gson。
Vincent-yuan
2021/04/01
4.7K0
DotNet的JSON序列化与反序列化
    JSON(JavaScript Object Notation)JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。在现在的通信中,较多的采用JSON数据格
彭泽0902
2018/01/04
1.1K0

相似问题

用JSON & JavaScriptSerializer反序列化Json结果

24

用JavaScriptSerializer C#反序列化JSON

20

用JavaScriptSerializer反序列化多个JSON结果

30

MVC JavaScriptSerializer反序列化json

11

使用JavaScriptSerializer反序列化JSON

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文