将 Json 数据转换为 C# 可理解的格式



我正在尝试将我的 json 数据转换为c sharp可理解的格式,以便我可以使用JsonConvert.SerializeObject将该数据转换为 JSON 格式并通过 HTTP 协议发送。我的 json 数据如下:

{
"m2m:ae":
{
"api": "ADN_AE_ATCARD06",
"rr": "true",
"lbl": ["AT06"],
"rn": " adn-ae_AT06" 
}
}

我试图以c sharp可理解的格式编写它,但能够做到这一点:

var obj = new
{
m2m = new
{
api = "ADN_AE45",
rr = "true",
lbl = new[] { "ad" },
rn = "adfrt"
}
};
var result = JsonConvert.SerializeObject(obj, Formatting.Indented);

我的问题是如何将m2m:ae包含在我的c-sharp code中。我是 json 的新手,只有在父对象没有值的情况下我才能转换,但如果它有值,我就不能。请帮忙。

我的评论不正确。 虽然"m2m:ae"不是 C# 属性的有效名称,但 JSON 是有效的。这可以通过使用 JsonProperty 标记类属性来实现。

像这样定义你的类

public class TestJson
{
[JsonProperty("m2m:ae")]
public Class2 Class2Instance { get; set; }    
}
public class Class2
{
public string Api { get; set; }
public string Rr { get; set; }
public string[] Lbl { get; set; }
public string Rn { get; set; }
}

然后像这样填充你的类

_sut = new TestJson
{
Class2Instance = new Class2 {Api = "ADN_AE45", Rr = "true", Lbl = new[] {"ad"}, Rn = "adfrt"}
};

和序列化

_result = JsonConvert.SerializeObject(_sut, new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
});

生成的序列化对象如下所示

{
"m2m:ae": {
"api": "ADN_AE45",
"rr": "true",
"lbl": ["ad"],
"rn": "adfrt"
}
}

反序列化是相反的

var test = JsonConvert.DeserializeObject<TestJson>(_result, new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
});

您是否在文本文件中编写了 Json? 如果是,那么 fileTxt 是写在文件上的内容(作为 json)

String fileTxt = File.ReadAllText(Give a path for a file); //read from file
Jobject Json = Jobject.Parse(fileTxt);   //convert the string to Json
Console.WriteLine($"rr: {Json["rr"]} ");  // get the rr from json and print it

除了 Fran 提到的类方法之外,还可以使用Dictionary method创建键值对并newtonsoft.json库转换为 json。

var sub= Dictionary<string,string>
{{"abc","xyz"}
};
var main = Dictionary<string,object>
{{"wer:asd",sub}
};
string str= JsonConvert.SerializeObject(main);

最新更新