首页 新闻 会员 周边 捐助

C#复杂json字符串如何转换成多个同一类型对象

0
悬赏园豆:10 [待解决问题]

前辈们,我又来了,感觉自己总拿现成的东西,有点羞耻...

比如[{"name":"12333","age":"10","length":15},{"name":"23333","age":"8","length":12}]

想转换成class student{
  string name{set;get;}

  int age{set;get;}

  int length{set;get;}

}

这样的对象 student1和student2

该怎么做呢

解决的思路是什么?

(顺便问一个题外话,类似的问题该如何怎样学习去自己解决,需要学习什么呢)

(同学刚给我发了一个第三方库,还没测试,还是想听一下前辈的看法)

1153710305的主页 1153710305 | 初学一级 | 园豆:2
提问于:2017-10-29 15:14
< >
分享
所有回答(5)
0

这个过程叫反序列化,那么具体是什么反序列化就要看你的序列化后的信息是什么样的,比如你的就是json格式的,那么你就json反序列化咯,反序列化了后肯定是要放到某个对象里面的吧,这里再看你的json,它是一个student的数组,那么你就巴拉一个数组出来存放反序列化后的结果即可。

List<Student> students=.....Deserialize(yourRawStringHere);

其实我感兴趣的是为啥你的园豆是负数的。。。。。

Daniel Cai | 园豆:10424 (专家六级) | 2017-10-29 17:01

咦?应该还剩四个的啊。。。怎么会是负的嘞。

我可以把json字符串反序列化生成一个载有想要信息的对象(相当于一个student)

但是想生成两个该怎么办呢。。。。把一串json格式的字符串生成两个以上的对象。。。

支持(0) 反对(0) 1153710305 | 园豆:2 (初学一级) | 2017-10-29 17:13

@1153710305: 所以你反序列化后应该是个student的集合啊。

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2017-10-29 18:00

@Daniel Cai: 是不是必须序列化的集合才能反序列化啊

支持(0) 反对(0) 猝不及防 | 园豆:2878 (老鸟四级) | 2017-10-30 13:30

@猝不及防:没看明白。

支持(0) 反对(0) Daniel Cai | 园豆:10424 (专家六级) | 2017-10-30 13:32
0
var jsonString=[{"name":"12333","age":"10","length":15},{"name":"23333","age":"8","length":12}];
var students= JsonConvert.DeserializeObject<List<Student>>(jsonString)
ohyex | 园豆:1696 (小虾三级) | 2017-10-30 18:44
0

我们都用第三方库直接转

虚风客 | 园豆:239 (菜鸟二级) | 2017-10-31 10:57
0

你去Nuget上面能看到下载量第一的包就是序列化json的。

Newtonsoft.Json

_Vegetables | 园豆:586 (小虾三级) | 2017-11-01 09:50
0

  通过 Nuget 使用 Newtonsoft.Json 类库进行反序列化,因为你给出的字符串就是 json 格式,使用 JsonConvert.DeserializeObject() 方法即可。

  代码如下:

using Newtonsoft.Json;
using System;
using System.Collections.Generic;

namespace CompressDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            const string source = "[{'name':'12333','age':'10','length':15},{'name':'23333','age':'8','length':12}]";
            var students = JsonConvert.DeserializeObject<List<Student>>(source);

            foreach (var student in students)
            {
                Console.WriteLine($"Name: {student.Name}, Age: {student.Age}, Length:{student.Length}");
            }

            Console.Read();
        }
    }

    class Student
    {
        public string Name { set; get; }

        public int Age { set; get; }

        public int Length { set; get; }
    }
}

 

  

反骨仔 | 园豆:444 (菜鸟二级) | 2018-03-20 11:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册