使用json.net
两种方式:
方式一:JSON本质就是字符串,所以可以直接手动拼接。
方式二:绑定实体类,然后使用NewtonSoft.JSON序列化。
使用 NewtonSoft.JSON
一对一用 JObject
一对多用 JArray
可以附上几行代码万分感谢
写个类似结构的class
然后序列化成json就好了
给的json都少括号
string station_id;
string sn;
DateTime time;
string result;
List<[对象]> head;
对象里的属性
string key;
string value;
大致长这个样子,添上访问修饰符和getter、setter就够了
这个又不难,head有多个,那应该是list,然后null都是string类型 没值的情况,然后就是head这个对象的list这个对象是个啥。只有两个属性key、value。 对于不想序列化成json的,NewtonSoft.JSON的话,这么写忽略序列化
[Newtonsoft.Json.JsonIgnore]
public string xxx;
写上面就ok了
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"
}
是不是只有顺序不一致?
@小草上飞飞:谢谢给的思路 已经实现
@Smallsmallpicks: 可以
@Smallsmallpicks:
真就是对象呗,你这个对象,有点对象
@小草上飞飞: 我只是试了一下没想到可以这样用
你可以自己在c#写一个对象实体,然后对实体赋值,最后序列化成json,你可以百度一下,网上很多json的序列化和反序列化的方法与功能。
https://q.cnblogs.com/q/129110/
程序员都这么“勤快”吗,都喜欢干机器干的事,这明显首先想到机器可以干,是不是自己写个 ?—— 是不是有人写过了。这种简易工具n年前n多人写过了。经常写客户端那么就存一个在计算机中,在线的也到处都是。
如:
复制→vs2017菜单栏→编辑→选择性粘贴→粘贴JSON为类。然后用System.Text.Json的JsonSerializer.Deserialize<类名>(string)