CuteBaby:用于Swift的JSON模型生成器

CuteBaby可以从JSON字符串生成Swift模型(结构或类)。

它具有一些不错的功能,可以自定义生成的模型。

  1. 它可以从JSON推断属性的类型,例如String,Int,Double,URL和Date。
  2. 它可以处理嵌套的JSON,它将生成嵌套的模型。
  3. 它支持Swift 4中的Codable。
  4. 您可以使用Property Map指定属性名称,使用Array Object Map指定数组的对象名称,使用Property Type Map指定属性的类型 ,或者使用Enum Properties指定枚举的定义。
  5. 它还可以处理数组根JSON,它将自动合并数组中对象的属性。
  6. 它可以使用漂亮的格式格式化JSON。
  7. 它可以从URL加载JSON。
  8. 您可以拖放文本文件来创建新项目。

对于JSON:

  {
     “ id”:42
     “ name”:“ nixzhu”,
     “推特”: {
         “ profile_url”:“ https://twitter.com/nixzhu”,
         “ created_at”:“ 2009-05-12T10:25:43.511Z”
     }
 } 

它将生成Swift代码(使用Codable ):

  struct用户:可编码{
     let id:整数
    命名:字符串
     struct Twitter:可编码{
        让profileURL:URL
        让createdAt:日期
        私有枚举CodingKeys:字符串,CodingKey {
             case profileURL =“ profile_url”
             case createdAt =“ created_at”
         }
     }
    让twitter:Twitter
 } 

请注意,可以使用Property Map profile_url: profileURL来更改属性名称(自动生成为profileUrl )。

没有Codable Swift代码:

  struct用户{
     let id:整数
    命名:字符串
     struct Twitter {
        让profileURL:URL
        让createdAt:日期
         init(profileURL:URL,createdAt:Date){
             self.profileURL = profileURL
             self.createdAt = createdAt
         }
        初始化?(json:[String:Any]){
            警卫让profileURLString = json [“ profile_url”]为? 字符串else {return nil}
            警卫让profileURL = URL(string:profileURLString)else {return nil}
            守卫让createdAtString = json [“ created_at”]为? 字符串else {return nil}
            守卫let createdAt = DateFormatter.iso8601.date(from:createdAtString)else {return nil}
             self.init(profileURL:profileURL,createdAt:createdAt)
         }
     }
    让twitter:Twitter
     init(id:Int,name:String,twitter:Twitter){
         self.id = id
         self.name =名称
         self.twitter =推特
     }
    初始化?(json:[String:Any]){
        警卫让id = json [“ id”]为? 否则为{return nil}
        警卫让name = json [“ name”]为? 字符串else {return nil}
        警卫让twitterJSONDictionary = json [“ twitter”]为?  [String:Any] else {return nil}
        保护卫兵twitter = Twitter(json:twitterJSONDictionary)else {return nil}
         self.init(id:id,名称:名称,twitter:twitter)
     }
 } 

如果不使用Codable则可能需要DateFormatter扩展名:

 扩展名DateFormatter {静态,让iso8601:DateFormatter = {
        让formatter = DateFormatter()
         formatter.timeZone = TimeZone(缩写:“ UTC”)
         formatter.locale =语言环境(标识符:“ en_US_POSIX”)
         formatter.dateFormat =“ yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ”
        返回格式化程序
     }()
 } 

对于JSON:

  {
   “ id”:42
   “ name”:“ nixzhu”,
   “ draft_posts”:[
     {
       “ id”:1
       “ title”:“ Hello World!”,
       “ body”:“嗨,我是CuteBaby。”
     },
     {
       “ id”:2
       “ title”:“你好吗?”,
       “ body”:null
     }
   ]
 } 

它将生成Swift代码(使用Codable ):

  struct用户:可编码{
     let id:整数
    命名:字符串
     struct Post:可编码{
         let id:整数
        让标题:字符串
         let body:字符串?
     }
     let draftPosts:[发布]
    私有枚举CodingKeys:字符串,CodingKey {
        案例ID
        案例名称
         case draftPosts =“ draft_posts”
     }
 } 

请注意,使用数组对象映射 draft_posts: Post可以更改对象名称(自动生成为DraftPost )。

对于JSON:

  {
   “新用户”: [
     {
       “ id”:2
       “ name”:“ bigbigchai”,
       “性别女”,
       “年龄”:16
     }
   ]
 } 

它将生成Swift代码(使用Codable ):

  struct NewModel:可编码{
     struct用户:可编码{
         let id:整数
        命名:字符串
        枚举性别:字符串,可编码{
            案例男
            案例女性
         }
        性别:性别
        年龄:整数
     }
    让newUsers:[User]
    私有枚举CodingKeys:字符串,CodingKey {
         case newUsers =“ new_users”
     }
 } 

请注意,使用Enum Properties gender[male, female]为性别属性生成枚举Gender。 还可以使用数组对象映射 new_users: User更改对象名称(自动生成的将是NewUser )。


您也可以将URL粘贴在右上角的文本视图中,CuteBaby将尝试从中自动加载JSON。


使用JSON字符串创建模型,即使CuteBaby也可以做到。

在Mac App Store上获取CuteBaby。

或在Mac App Store上使用SmartBaby。 更聪明。

希望你喜欢。 😀💕