首页 新闻 赞助 找找看

如何使用C#写以下格式json

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

Smallsmallpicks的主页 Smallsmallpicks | 初学一级 | 园豆:2
提问于:2020-12-25 01:13
< >
分享
所有回答(9)
0

使用json.net

Tom.汤 | 园豆:3026 (老鸟四级) | 2020-12-25 08:15
0

两种方式:
方式一:JSON本质就是字符串,所以可以直接手动拼接。
方式二:绑定实体类,然后使用NewtonSoft.JSON序列化。

leslie_xin | 园豆:404 (菜鸟二级) | 2020-12-25 08:16
0

使用 NewtonSoft.JSON
一对一用 JObject
一对多用 JArray

jqw2009 | 园豆:2439 (老鸟四级) | 2020-12-25 08:54

可以附上几行代码万分感谢

支持(0) 反对(0) Smallsmallpicks | 园豆:2 (初学一级) | 2020-12-25 14:38
0

写个类似结构的class
然后序列化成json就好了

崩坏的领航员 | 园豆:438 (菜鸟二级) | 2020-12-25 14:45
1

给的json都少括号

string station_id;
string sn;
DateTime time;
string result;
List<[对象]> head;




对象里的属性
string key;
string value;

大致长这个样子,添上访问修饰符和getter、setter就够了

echo_lovely | 园豆:1420 (小虾三级) | 2020-12-25 15:10

这个又不难,head有多个,那应该是list,然后null都是string类型 没值的情况,然后就是head这个对象的list这个对象是个啥。只有两个属性key、value。 对于不想序列化成json的,NewtonSoft.JSON的话,这么写忽略序列化

[Newtonsoft.Json.JsonIgnore]
public string xxx;

写上面就ok了

支持(0) 反对(0) echo_lovely | 园豆:1420 (小虾三级) | 2020-12-25 15:18
using System;
using System.Collections.Generic;

namespace WindowsFormsApp1
{
    public class Meow
    {
        public string Station_id { get; set; }

        public string Sn { get; set; }

        public DateTime Time { get; set; }

        public string Result { get; set; }

        public List<Head> head;
    }
}

对象

namespace WindowsFormsApp1
{
    public class Head
    {
        public string Key { get; set; }

        public string Value { get; set; }

        [Newtonsoft.Json.JsonIgnore]//没有其他对象的话,这个可以删掉
        public string Abc { get; set; }
    }
}

测试


            List<Head> heads = new List<Head>();
            for(int i =0;i<3; i++)
            {
                Head head = new Head();
                head.Key = i.ToString();
                head.Value = i.ToString();
                head.Abc = i.ToString() + i.ToString();
                heads.Add(head);
            }
            Meow meow = new Meow();
            meow.Station_id = "001";
            meow.Sn = "111";
            meow.Time = DateTime.Now;
            meow.Result = "404";
            meow.head = heads;

            string jsonStr = JsonConvert.SerializeObject(meow);

结果

{
	"head": [
		{
			"Key": "0",
			"Value": "0"
		},
		{
			"Key": "1",
			"Value": "1"
		},
		{
			"Key": "2",
			"Value": "2"
		}
	],
	"Station_id": "001",
	"Sn": "111",
	"Time": "2020-12-25T15:38:15.737763+08:00",
	"Result": "404"
}

是不是只有顺序不一致?

支持(1) 反对(0) echo_lovely | 园豆:1420 (小虾三级) | 2020-12-25 15:41

@小草上飞飞:谢谢给的思路 已经实现

支持(0) 反对(0) Smallsmallpicks | 园豆:2 (初学一级) | 2020-12-25 16:37

@Smallsmallpicks: 可以

支持(0) 反对(0) echo_lovely | 园豆:1420 (小虾三级) | 2020-12-25 17:49

@Smallsmallpicks:
真就是对象呗,你这个对象,有点对象

支持(0) 反对(0) echo_lovely | 园豆:1420 (小虾三级) | 2020-12-25 17:53

@小草上飞飞: 我只是试了一下没想到可以这样用

支持(0) 反对(0) Smallsmallpicks | 园豆:2 (初学一级) | 2020-12-25 19:15
0
  • Json.Net
  • System.Text.Json
  • Binary serialization
Jonny-Xhl | 园豆:691 (小虾三级) | 2020-12-26 17:28
0

你可以自己在c#写一个对象实体,然后对实体赋值,最后序列化成json,你可以百度一下,网上很多json的序列化和反序列化的方法与功能。

依米呀 | 园豆:235 (菜鸟二级) | 2020-12-27 10:35
0

https://q.cnblogs.com/q/129110/

花飘水流兮 | 园豆:13560 (专家六级) | 2020-12-27 14:14

程序员都这么“勤快”吗,都喜欢干机器干的事,这明显首先想到机器可以干,是不是自己写个 ?—— 是不是有人写过了。这种简易工具n年前n多人写过了。经常写客户端那么就存一个在计算机中,在线的也到处都是。

如:

支持(0) 反对(0) 花飘水流兮 | 园豆:13560 (专家六级) | 2020-12-27 14:20
0

复制→vs2017菜单栏→编辑→选择性粘贴→粘贴JSON为类。然后用System.Text.Json的JsonSerializer.Deserialize<类名>(string)

coredx | 园豆:671 (小虾三级) | 2021-01-07 18:36
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册