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

时间:2018-02-12 13:36:39

标签: c# json

我正在尝试将我的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的新手,我只能在父对象没有值的情况下进行转换,但如果它有值,我无法进行转换。请帮忙。

3 个答案:

答案 0 :(得分:2)

我的评论不正确。虽然“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()
            });

答案 1 :(得分:0)

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

WARN

答案 2 :(得分:0)

除了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);