csharp-json

样例类

public class Model_driverProtocolSensorSimulator
{
[JsonIgnore]
public const int CMD_TYPE_LOGIN = 1;
[JsonIgnore]
public const int CMD_TYPE_SENSOR_INFO = 2;
[JsonIgnore]
public const int CMD_TYPE_SENSOR_DATA = 3;

public int CmdType;
public List<Model_driverSensor> List_sensor = new List<Model_driverSensor>();
public string Param;
}

生成json字符串

var var_list = $"t{file_index}";
var strArr = new JArray { var_list };
var obj = new JObject{ {"type","datas" },{ "size",file_size},{ "var_name_list",strArr},{ "trans_type",trans_type},{"pre_formula",preFormula },
{ "preelaboration",preelabration},{ "formula",formula},{"elaboration",elaboration } };
string param = obj.ToString();

// without formatting
string strResponse = ws.CheckUser("", jsonObj.ToString(Formatting.None));
// object to json string
Newtonsoft.Json.JsonConvert.SerializeObject(new {foo = "bar"})


解析json字符串


public class Model_driverProtocol
{
public int CMD_TYPE_LOGIN = 1;

public int CmdType;
public string param;
}

var obj = JsonConvert.DeserializeObject<Model_driverProtocol>(msg);
switch (obj.CmdType)
{
case 1:
break;
}

// 方法二
string json="{\"PingResult\":100}";
JObject jo = JObject.Parse(json);
JToken jToken = jo["PingResult"];
int result = (int)jToken;

类保存为json

public class ModelMasterIdMapping
{
[PrimaryKey, AutoIncrement]
public int ID { get; set; }
public string LocalIdMaster { get; set; }
public string RemoteIdMaster { get; set; }
}

{
var param = JsonConvert.SerializeObject(App.db.m_masterIdMapping);
var notifyPath = new FileInfo(spc_path).Directory.FullName + "/masterIdMapping.json";
FileStream fs = new FileStream(notifyPath, FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
sw.Write(param);
sw.Flush();
sw.Close();
fs.Close();
}

序列化 json 后 首字母小写

var user = new { Name = "john", Age = 19 }; 
var serializerSettings = new JsonSerializerSettings
{
// 设置为驼峰命名
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
var userStr = JsonConvert.SerializeObject(user, Formatting.None, serializerSettings);

从文件加载 json

strResponse = System.IO.File.ReadAllText(appPath + "/taskResp.json");
var obj = JsonConvert.DeserializeObject<ModelResp<ModelTask>>(strResponse);