c# - 如何将 Json 嵌套属性获取到主要属性

标签 c# json serialization nested-attributes

我有以下情况:

这是我的类结构:

public class User
{

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public System.Collections.ObjectModel.Collection<Likes> Likes { get; set; }

}

public class Likes
{

    public string Sport { get; set; }

    public string Music { get; set; }

    public string Food { get; set; }

    public string Place { get; set; }


}

当我序列化 User 类的对象时,它将生成以下 json 字符串:

{"FirstName":"Naresh",
 "LastName":"Parmar",
 "Likes": [{"Sport":"Cricket",
            "Music":"Classic",
            "Food":"Gujarati",
             "Place":"India"}]
}

我想生成上面的 json 字符串,如下所示:

{"FirstName":"Naresh",
 "LastName":"Parmar",
 "Sport":"Cricket",
 "Music":"Classic",
 "Food":"Gujarati",
 "Place":"India"
}

我希望将嵌套属性作为主要属性。

如有任何帮助,我们将不胜感激。

提前致谢..

编辑:

 {"FirstName":"Naresh",
  "LastName":"Parmar",
  "Sport":"Cricket,Chess,Football",
  "Music":"Classic",
  "Food":"Gujarati",
  "Place":"India"
  }

最佳答案

这确实是一种糟糕的做法,因为我将在下面发布的代码没有很好的可维护性,但是如果这正是您所需要的,您可以使用它。另一个具有您喜欢的格式的类,并且有一个方法可以将喜欢的列表添加到您需要的格式中。您应该序列化为 JSON 的类:

    class NestedUser
    {
        public string FirstName { get; set; }

        public string LastName { get; set; }

        public string Sport { get; set; }

        public string Music { get; set; }

        public string Food { get; set; }

        public string Place { get; set; }

        public void AddLikes(System.Collections.ObjectModel.Collection<Likes> likes)
        {
            foreach (Likes like in likes)
            {
                Sport += like.Sport + ",";
                Music += like.Music + ",";
                Food += like.Food + ",";
                Place += like.Place + ",";
            }

            if (Sport != string.Empty)
            {
                Sport = Sport.Substring(0, Sport.Length - 1);
            }
            if (Music != string.Empty)
            {
                Music = Music.Substring(0, Music.Length - 1);
            }
            if (Food != string.Empty)
            {
                Food = Food.Substring(0, Food.Length - 1);
            }
            if (Place != string.Empty)
            {
                Place = Place.Substring(0, Place.Length - 1);
            }
        }
    }

关于c# - 如何将 Json 嵌套属性获取到主要属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31833001/

相关文章:

c# - 如何以编程方式单击网络浏览器控件内的 facebook 'Post' 按钮

c# - 无法声明 ArrayList

java - 使用 Jackson 解析具有多个对象的 json 文件

json - 无法将 JSON 过滤器应用于 Google map 中的美洲原住民保留区

java - 为什么 java.util.List 不实现 Serializable?

java - 如何使用 GSON 反序列化 Map<String, Object>

c# - Linq - 在多个(或)条件下左连接

c# - IF FALSE THEN ... END IF 中的包装代码在 VBScript 中有意义吗?

java - php json_encode 安卓的欧元符号

java - 通过 ObjectStream 序列化问题发送/接收