Giter Club home page Giter Club logo

jsonexport's Introduction

JSONExport is Seeking New Maintainers/Contributors

Hello everyone,

I've had a great time working on this project, I kicked it of with the support for few languages, and the amazing community added plenty more! However, I am currently unable to continue actively maintaining this project and attend to all incoming issues/requests. I would like to take this opportunity to express my gratitude to everyone who has contributed to the development of this project over the years.

I'm hoping to find someone (or a group of people) who are interested in taking over as maintainers or contributors. If you are interested, here's how you can express your interest:

  1. Fork the repository and make some contributions. You can start with solving existing issues or adding new features.
  2. Send a pull request with your changes. I promise I will be more attentive to future PRs.
  3. After a few successful pull requests, create an issue titled "[Your Name] for maintainer" and in the description, reference your earlier contribution and any additional features/changes you would like to bring to the project, if any.

The community will have a chance to voice their thoughts on the issue. If the feedback is neutral or positive, and there is no clear blocker on why you wouldn't be a good contributor, I will add you to the project as maintainer.

I believe in the power of open source and the incredible community that drives it. I am confident that with your support, JSONExport can continue to grow and evolve.

Thank you for your understanding and for your continued support of JSONExport.

Best regards,

Ahmed


JSONExport

JSONExport is a desktop application for Mac OS X written in Swift. Using JSONExport you will be able to:

  • Convert any valid JSON object to a class of one of the currently supported languages.
  • Preview the generated content before saving it.
  • Include constructors only, utility methods only, both or none.
  • Change the root class name.
  • Set a class name prefix for the generated classes.
  • Set package name for Java files.

Generated Files

Each generated file, besid the getters and setters (for Java) can include:

  • A constructor wich accepts an instance of NSDictionary, JSON, JSONObject instance depending on the file language, and the class will use this object to fill its properties data.
  • A utility method which converts the class data into a dictionary again.

Currently supported languages

Currently you can convert your JSON object to one of the following languages:

  1. Java for Android.
  2. Java for Realm Android.
  3. GSON for Android
  4. Swift Classes.
  5. Swift Classes for SwiftyJSON library.
  6. Swift Classes for Realm.
  7. Swift - CoreData.
  8. Swift Structures.
  9. Swift Structures for Gloss
  10. Swift Mappable Classes for (Swift 3) ObjectMapper
  11. Swift Structures for Unbox
  12. Objective-C - iOS.
  13. Objective-C - MAC.
  14. Objective-C - CoreData.
  15. Objective-C for Realm iOS.

Screenshot shows JSONExport used for a snippet from Twitter timeline JSON and converting it to Swift-CoreData. alt tag

Installation

Kindly clone the project, and build it using xCode 8 and above.

To Do

  • Support Objective-C Done
  • Sync multible classes with the same name or have the same exact properties Done
  • Support to parse JSON arrays of objects Done
  • Load JSON data from web
  • Open .json files from JSONExport
  • Supported languages management editor.
  • Beside raw JSON, load the model raw data from plist files as well.

Known Limitations:

  • When exporting to subclasses of NSManagedObject, some data types can not be exported. For example core data does not have data type for "array of strings"; in turn, if your JSON contains an array of strings, the exported file will not compile without you fixing the type mismatch.
  • When exporting subclasses of RLMObject, you will have to enter the default values of premitive types manually. This is because of dynamic properties limition that prevents you from having an optional premitive type.
  • When exporting to CoreData or Realm and you want to use the utility methods, you will need to manually watch for deep relation cycle calls; that is, when you convert an object to dictionary, this object try to convert one of its relation to a dictionary and the relation tries to convert the original object to a dictionary, that will cause a kind of cycle where each object involved calls the other object's toDictionary method infenitly...
  • Avoid attempt to model a JSON object with empty values, because JSONExport does not understand empty values and can not guess their types.
  • Deep nesting of arrays and objects will not be exported in a proper model files.

Final Note

The application still in its early stage. Please report any issue so I can improve it.

License

JSONExport is available under custom version of MIT license.

jsonexport's People

Contributors

ahmed-ali avatar ahmed-hasanin avatar alexxnica avatar amolgupta avatar baroqueworksdev avatar brychanodlum avatar cb-mori avatar codeeagle avatar dimohamdy avatar ebubekirsezer avatar esbenvb avatar huabin avatar jmonroe avatar kaandedeoglu avatar loufq avatar lycaste avatar mhollisfb avatar minaisland avatar mumer92 avatar narlei avatar octmon avatar palleas avatar pmusolino avatar serhii-londar avatar superk589 avatar tomkidd avatar tparizek avatar tufnica avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jsonexport's Issues

Add support for Parse

It would be great to be able to auto-create PFObject subclass models using Parse's json output from it's REST API.

How to use JSONExport for array of array type of service?

{"responseString":"Success","errorCode":1,"result":[[{"videoName":"Video Test","description":"Video Test","videoImage":"http://t1.gstatic.com/images?q=tbn:ANd9GcQrRQrJ2OmPJNpwH6MU6pGSJGoYMVgOyozopoU3xgTtoUqxcbQM","categoryId":"1","categoryName":"TV Show","count":2},{"videoName":"video test 4","description":"Video Test","videoImage":"http://theonlinejournalist.com/wp-content/uploads/2015/05/Priyanka-Chopra.jpg","categoryId":"1","categoryName":"TV Show","count":2}],[{"videoName":"Video Test 2","description":"Video Test","videoImage":"http://lifestylesz.com/wp-content/uploads/2014/02/Priyanka-Chopra.jpg","categoryId":"2","categoryName":"Band","count":3},{"videoName":"video test 3","description":"Video Test","videoImage":"http://media.glamsham.com/download/wallpaper/celebrities/images/p/priyanka-chopra-wallpaper-114-12x9.jpg","categoryId":"2","categoryName":"Band","count":3},{"videoName":"video test 5","description":"Video Test","videoImage":"http://en.dailypakistan.com.pk/wp-content/uploads/2015/03/priyanka-chopra-4225-1680x1050.jpg","categoryId":"2","categoryName":"Band","count":3}],[{"videoName":"Test 1","description":"","videoImage":"http://myapne.com/news_images/news_1443449687_7899e1717e0698d6e50364_1.jpg","categoryId":"3","categoryName":"Music","count":8},{"videoName":"Test 2","description":"","videoImage":"https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSIbOK6zbXK0PmxttPVVrh3hl6oYU9aQEXTPo32VRdn7Om3bir6","categoryId":"3","categoryName":"Music","count":8},{"videoName":"Test 3","description":"","videoImage":"http://1.bp.blogspot.com/_uJ-SDPxtYh8/TClt5l6f72I/AAAAAAAAG0k/OdQv75Hyjbw/s1600/SONAM+kapoor+(2).jpg","categoryId":"3","categoryName":"Music","count":8},{"videoName":"Test 4","description":"","videoImage":"https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRs7UQlBc3BEyQjBwvNgYzQI4ZCSmVgmqqdWQ5jbsJB-u2yek3E","categoryId":"3","categoryName":"Music","count":8},{"videoName":"Test 5","description":"","videoImage":"http://www.amicmaza.com/wp-content/uploads/2012/09/Simple-beautiful-girl.jpg","categoryId":"3","categoryName":"Music","count":8},{"videoName":"Test 6","description":"","videoImage":"http://2.bp.blogspot.com/-dKYXsPrDeU8/T5ZD9NeNRfI/AAAAAAAAB2Y/P22RdR4-R48/s1600/pakistani+girls+photos+(645).jpg","categoryId":"3","categoryName":"Music","count":8},{"videoName":"Test 7","description":"","videoImage":"http://www.pkhykia.com/wp-content/uploads/2014/02/Is-ko-kahte-ha-simple-girl.jpg","categoryId":"3","categoryName":"Music","count":8},{"videoName":"Test 9","description":"","videoImage":"http://1.bp.blogspot.com/-NbmHZvpPG74/TeDNcarKf5I/AAAAAAAAC1c/mRraMamUfNY/s1600/217554_103082809779610_100002336742079_28612_6306963_n.jpgg","categoryId":"3","categoryName":"Music","count":8}],[{"videoName":"Test 9","description":"Test","videoImage":"https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcT8ozJlGP6EKgpM_lz7VUSow_gxx6XYr9fSnmIeHj2X9ekCFFgV","categoryId":"4","categoryName":"Dance","count":5},{"videoName":"Test 10","description":"Test3","videoImage":"http://pakifashion.com/wp-content/uploads/2014/11/17736_452075081557853_83273622_n.jpg","categoryId":"4","categoryName":"Dance","count":5},{"videoName":"Test 11","description":"Test3","videoImage":"http://3.bp.blogspot.com/-fx6BSTnEmnI/VKpQFgmp48I/AAAAAAAAU14/sFI07qkFM8w/s1600/Bridal%2Bdress%2Bphoto%2B25.jpg","categoryId":"4","categoryName":"Dance","count":5},{"videoName":"Test 12","description":"Test3","videoImage":"http://2.bp.blogspot.com/-TiaZfzO6ocM/VIQB0422OwI/AAAAAAAAUfs/bCTd1WeuoXw/s1600/Bridal%2BMehndi%2Bdesign%2Bphoto%2B261.jpg","categoryId":"4","categoryName":"Dance","count":5},{"videoName":"Test 12","description":"Test3","videoImage":"http://www.shaadi-direct.com/images/members/photos/65339_7287483429.jpg","categoryId":"4","categoryName":"Dance","count":5}]]}

Command-line interface or scripting options?

Hello

We are considering using your tools for autogenerating swift classes based on JSON outputs from a list for URLs pointing to our REST API.

Is it currently possible to call your tool by command line, or are you planning to make it possible?

Thanks

New feature request.

It would be great to add below new features:

  1. Let user copy all generated models into clipboard
  2. It would be brilliant to include feature to assign value from JSON into model.

Thanks.

Rgds,
Robin

Something wrong, generate swift code

Hello
I had just use your tool for autogenerating swift class by swiftyjson
but here some issues on it.
syntax warning or error
for example:
1:JSON.nullJSON is deprecated . new syntax is JSON.null
2:not import package, maybe it should be import package automatic, import SwiftyJSON

some suggestions:
1: every file have a checkbox ,for merge into one file?

another one. use this tool generate struct swift file appear error yet
json content like this:
{
"location": null
}
then autogenerate file
var location : AnyObject!
location = dictionary["location"] as? AnyObject
in new swift syntax it should be
location = dictionary["location"] as AnyObjec!
or define a optional variable var location : AnyObject?

f.y.i

can swift variable whith default value?

class SwiftClass{

var address : Addres!
var isNonProfit : Bool!
var links : [Link]!
var name : String!
var page : Int!
var url : String!
}

because symbol "!" can take crash, so can above be this:
class SwiftClass{

var address : Addres?
var isNonProfit : Bool = false
var links : [Link] = []
var name : String = ""
var page : Int = 0
var url : String = ""
}
i want the blow variable effect, how can i get it?

Swift 3 Xcode 8 Update

I made a [https://github.com//pull/55](Pull Request) with swift 3 update. Here is [https://github.com/Sadmansamee/JSONExport](My Repo)

First letter to lowercase

Why do you want to change the first letter of the model property to write it, it would be more appropriate to use the default field returned by JSON

Closed questions

Click on the window after the application is not quit!If you need to use will need to manually to exit the application again and again to open, can consider to add click on the dock bar, open the window again

Error in NSZone iOS Objective C.

Hi Sir,
There are methods in iOS objective C giving NSZone issues.
Should i just Comment all the method in which argument is passed of type NSZone, Or it will cause issue, i also request Mr Ahmed if you can update an version for Objective C, i believe that is very old.
More Over Can any one please help with a link that gives me an example of how to use this library, as i want to know do i need to make the root class with shared instance method and pass the dictionary to the instance method (why the method is returning instance type, and taking input as NSDictionary.)

Thanks in Advance

Overriding specific property types

In our system we have a bunch of "type" fields which on the server and client are identified as ENUMs, but in between we use JSON and have to use strings for these fields.

Are you considering any support for overriding property types on specific classes, så the auto-generated code will have this ENUM for specific fields?

That would be nice - thanks!

Xcode 7

JSONExport is not being builded on Xcode 7 with the latest SDK version. It's ask to convert to Latest Swift Syntax, but doing this or not, it doesn't compile

screen shot 2015-09-22 at 15 08 40

Java- String array issue

If model class have JSONArray the output of generation be like :
need to convert the JSONArray to String [] array

       jsonObject.optString[]("jsonarrayData");

Swift - Mappable Issues

Firstly, with XCode 7 there have been updates to ObjectMapper's Mappable protocol, the init method is now generic and empty as follows:

required init?(_ map: Map){
}

This should go along with #23

Additionally there's an issue with how classes are being created for Mappable types, here's some example generated code:

//
//  Response.swift
//  Model file Generated using JSONExport: https://github.com/Ahmed-Ali/JSONExport

import Foundation

class Response{

  var arbitraryCount : Int?
  var posts : [Post]?
  var meta : Meta?


  required init?(_ map: Map){

  }

  func mapping(map: Map)
  {
    arbitraryCount <- map["arbitrary_count"]
    if posts != nil{
      var dictionaryElements = [NSDictionary]()
      for postsElement in posts {
        dictionaryElements.append(postsElement.toDictionary())
      }
      dictionary["posts"] = dictionaryElements
    }
    if meta != nil{
      dictionary["meta"] = meta.toDictionary()
    }

  }

}

First and foremost is the lack of : Mappable after Response, it should look like

class Response: Mappable {
...

Secondly is the failure to simply map lists of mappable types. I have a Post and Meta mappable type and the code generated is unnecessary and doesn't even look like it'll work...
It should look like:

...
  func mapping(map: Map)
  {
    arbitraryCount <- map["arbitrary_count"]
    posts          <- map["posts"]
    meta           <- map["meta"]
  }
...

(The arbitraryCount was just stuck into the JSON to illustrate that proper Mappable syntax does work for primitive types)

Still a very useful tool as its making it much easier to generate models for my complex types, I'm currently just manually fixing the above.

Wrong output

This Json generates wrong (non-working) output with Objective C - iOS:

[
  {
    "timezone": "Europe/Vienna",
    "spatial_features": [
      [
        16.31,
        48.18
      ]
    ],
    "met_sets": [
      {
        "name": "basic_now",
        "begin": "2015-09-15T16:08:00+02:00",
        "parameter_timesets": [
          {
            "params": [
              "TEMP_FELT",
              "WIND_GUST",
              "TEMP",
              "CC",
              "HUM_REL",
              "PREC",
              "WIND_DIR",
              "SYM_W",
              "WIND",
              "PRES_MSL"
            ],
            "timebase": "NOW",
            "data": [
              [
                [
                  293.6
                ],
                [
                  9.222
                ],
                [
                  293.1
                ],
                [
                  0.8415
                ],
                [
                  0.7104
                ],
                [
                  0.0
                ],
                [
                  3.067
                ],
                [
                  5
                ],
                [
                  4.039
                ],
                [
                  101051.0
                ]
              ]
            ]
          }
        ]
      }
    ]
  }
]

Specifically it generates:

#import "NSArray.h"

and

    for(NSDictionary * dataDictionary in dataDictionaries){
            NSArray * dataItem = [[NSArray alloc] initWithDictionary:dataDictionary];
            [dataItems addObject:dataItem];
        }

"loop all over its keys" can't "dictionary[key] = dic[key]"

JSON:

{
    "data": {
        "modules": [
            {
                "grids": [
                    {
                        “A”: "http://xxx”,
                    }
                ]
            },
            {
                "grids": [
                    {
                        “B”: 1
                    }
                ]
           }
        ]
}
}

==> "grids.swift"


class Grid : NSObject, NSCoding, Mappable{

	var b : Int?

	class func newInstance(map: Map) -> Mappable?{
		return Grid()
	}
... ...

Can NOT export "A"。
so.


/**
Creates and returns a dictionary who is built up by combining all the dictionary elements in the passed array.

- parameter array: array of dictionaries.
- returns: dictionary that combines all the dictionary elements in the array.
*/
func unionDictionaryFromArrayElements(_ array: NSArray) -> NSDictionary
{
    let dictionary = NSMutableDictionary()
    for item in array{
        if let dic = item as? NSDictionary{
            //loop all over its keys
            for key in dic.allKeys as! [String]{
                //error : all keys = dictionary + dic
                if let old = dictionary[key] as? NSArray,
                    let new = dic[key] as? [Any] {
                    dictionary[key] = old.addingObjects(from: new)
                } else {
                    dictionary[key] = dic[key]
                }
//                dictionary[key] = dic[key]
            }
        }
    }
    return dictionary
}

Inherit and note

what about a model like this

#import "BaseModel.h"

@interface ZXPosition : BaseModel
/**
 *  职务id
 */
@property (nonatomic , assign) NSInteger gid;
/**
 *  学校id
 */
@property (nonatomic , assign) NSInteger sid;
/**
 *  职务名称
 */
@property (nonatomic , copy) NSString *name;
/**
 *  描述
 */
@property (nonatomic , copy) NSString *desinfo;
/**
 *  职务人数
 */
@property (nonatomic , assign) NSInteger typeNumber;
@property (nonatomic , copy) NSString *date_str;
/**
 *  职务作息列表
 */
@property (nonatomic , strong) NSArray *sgaLit;
@end

Java-Model space in setter and getter methods

when generate code for java class found space in the method name

public void set Productid(int productId) {
    this.productId = productId;
}

public int get Productid() {
    return this.productId;
}

JSONLint valid, but JSONExport Cannot parse

This very JSON passed in JSONLint (http://jsonlint.com and https://zaa.ch/jsonlint/ ), but Cocoa report error Badly formed object around character 373,No value for key in object around character 50.

[{
	"city": "南京",
	"cafes": [{
		"name": "夫子庙店",
		"addr": "秦淮区大石坝街32号(夫子庙东门)",
		"poster": "http://www.sitcoffee.com/system/upload/201206/56f9552642d9bc0da2cff2dd8da9692d_t.jpg",
		"oneword": "临岸而坐,秦淮之美一览无遗,一杯下午茶,或一杯香气四溢的咖啡,让你细细感悟这“江南锦绣之邦,金陵风雅之薮”的“十里秦淮”古韵魅力。",
		"opening": "9:00-24:00",
		"lng": "118.793210000045",
		"lat": "32.0213900004372",
		"phones": ["025-52266082"]
	}, {
		"name": "南大店",
		"addr": "鼓楼区汉口路47号二楼(南大正南门)",
		"poster": "http://www.sitcoffee.com/system/upload/201207/5f2d243960acad2b557c9e9f6fa88be7_t.jpg",
		"oneword": "生活与享受交错变化的南方城市,将咖啡香气径自延伸到最大愉悦,与众多南京院校为邻的南大店,等候你用散步的时间来欣赏精彩。",
		"opening": "8:30-24:00",
		"lng": "118.778726",
		"lat": "32.053496",
		"phones": ["025-83597180"]
	}]
}]

Some classes are not generated but refered to in the RootClass?

Hello

I have the following JSON code which I used to generate some classes.

The Root class looks fine, line this:

public class RootClass{
    private Account[] accounts;
    private Creditaccount[] creditaccounts;
    private Debetaccount[] debetaccounts;
    private Favoriteaccount[] favoriteaccounts;

But I only get Account and RootClass, thus missing the Credit,Debet and Favoriteaccount.

This is the code I use. What could be wrong?

{
  "debetaccounts": [
{
    "id": "99170000141551",
    "type": "KS_ACCOUNT",
    "currency": "SEK",
    "amount": "620744",
    "favorite": true,
    "sortNumber": "1",
    "availableAmount": "9000000",
    "reservedAmount": "",
    "ownName": "Lönekonto",
    "canRename": true,
    "showAvailableAmount": true
  },
  {
    "id": "99170032607716",
    "type": "KS_ACCOUNT",
    "currency": "SEK",
    "amount": "12089523",
    "favorite": true,
    "sortNumber": "2",
    "availableAmount": "12089523",
    "reservedAmount": "",
    "ownName": "Budgetkonto",
    "canRename": true,
    "showAvailableAmount": true
  }

  ],
  "accounts": [
    {
      "id": "99170000141551",
      "type": "KS_ACCOUNT",
      "currency": "SEK",
      "amount": "620744",
      "favorite": true,
      "sortNumber": "1",
      "availableAmount": "9000000",
      "reservedAmount": "",
      "ownName": "Lönekonto",
      "canRename": true,
      "showAvailableAmount": true
    },
    {
      "id": "99170032607716",
      "type": "KS_ACCOUNT",
      "currency": "SEK",
      "amount": "12089523",
      "favorite": true,
      "sortNumber": "2",
      "availableAmount": "12089523",
      "reservedAmount": "",
      "ownName": "Budgetkonto",
      "canRename": true,
      "showAvailableAmount": true
    },
    {
      "id": "99175250038791",
      "type": "KS_ACCOUNT",
      "currency": "SEK",
      "amount": "19456",
      "favorite": true,
      "sortNumber": "3",
      "availableAmount": "519456",
      "reservedAmount": "",
      "ownName": "Hushållskonto",
      "canRename": true,
      "showAvailableAmount": true
    }
  ],
  "favoriteaccounts": [
                       {
                              "id": "99170000141551",
                              "type": "KS_ACCOUNT",
                              "currency": "SEK",
                              "amount": "620744",
                              "favorite": true,
                              "sortNumber": "1",
                              "availableAmount": "9000000",
                              "reservedAmount": "",
                              "ownName": "Lönekonto",
                              "canRename": true,
                              "showAvailableAmount": true
                            },
                            {
                              "id": "99170032607716",
                              "type": "KS_ACCOUNT",
                              "currency": "SEK",
                              "amount": "12089523",
                              "favorite": true,
                              "sortNumber": "2",
                              "availableAmount": "12089523",
                              "reservedAmount": "",
                              "ownName": "Budgetkonto",
                              "canRename": true,
                              "showAvailableAmount": true
                            },
                            {
                              "id": "99175250038791",
                              "type": "KS_ACCOUNT",
                              "currency": "SEK",
                              "amount": "19456",
                              "favorite": true,
                              "sortNumber": "3",
                              "availableAmount": "519456",
                              "reservedAmount": "",
                              "ownName": "Hushållskonto",
                              "canRename": true,
                              "showAvailableAmount": true
                            }
  ],
  "status": 1,
  "nonce": "7edd43a0-6b00-4722-b6dc-d386a3ce18cd",
  "creditaccounts": [
                     {
                         "id": "99170032607716",
                         "type": "KS_ACCOUNT",
                         "currency": "SEK",
                         "amount": "12089523",
                         "favorite": true,
                         "sortNumber": "2",
                         "availableAmount": "12089523",
                         "reservedAmount": "",
                         "ownName": "Budgetkonto",
                         "canRename": true,
                         "showAvailableAmount": true
                       },
                       {
                         "id": "99175250038791",
                         "type": "KS_ACCOUNT",
                         "currency": "SEK",
                         "amount": "19456",
                         "favorite": true,
                         "sortNumber": "3",
                         "availableAmount": "519456",
                         "reservedAmount": "",
                         "ownName": "Konto 3",
                         "canRename": true,
                         "showAvailableAmount": true
                       }
  ]
}

Support Multiple Setting

Support Multiple Setting Like Swift [Mappable & Realm ]
in same Class/ Struct
or with different Class/Struct with init support

Implicitly Unwrapped Optionals.

Very good work man. But there is one thing that bothers me. The tool generates implicitly unwrapped optionals for swift structs. I rather have my models nonoptional let. Is this configurable?

Mappable Not exporting to Swift 3 syntax

When exporting Constructors and Utilities class is not conforming to the updated swift 3 NSCoding , Mappable protocols. Also decodeObjectForKey and encodeObject have been renamed to decodeObject(forKey:) / encodeObject(_:forKey:)

Problem with complex json

I tried converting a relatively comlex json and it does not compile under xcode. It cannot find NSObject. After fixing this the are more errors with the initialisers.

This is the json I have trouble with:
{
"standing": [
{
"sport_id": 2,
"sport": "Basketball",
"champ_id": 237,
"champ": "NBA",
"champ_full": "NBA",
"period_id": 7317,
"period": "2014-2015",
"flag": "http://myurl.com/iphone/flags/nba_l.png",
"standings": [
{
"definition": {
"column_number": 11,
"section_title": "NBA Ανατολή",
"section_id": "standings"
},
"headers": [
"",
"Ομάδα",
"Ν",
"Η",
"Ν%",
"GB",
"ΕΝ",
"ΕΚ",
"L10",
"ST",
""
],
"data": [
{
"team_id": 3267,
"col_1": "1",
"col_2": "Ατλάντα Χοκς",
"col_3": "45",
"col_4": "12",
"col_5": "79%",
"col_6": "0.0",
"col_7": "26-4",
"col_8": "19-8",
"col_9": "6-4",
"col_10": "W 2",
"col_11": ""
},
{
"team_id": 3261,
"col_1": "2",
"col_2": "Τορόντο Ράπτορς",
"col_3": "37",
"col_4": "20",
"col_5": "65%",
"col_6": "8",
"col_7": "21-9",
"col_8": "16-11",
"col_9": "5-5",
"col_10": "L 3",
"col_11": ""
},
{
"team_id": 3263,
"col_1": "3",
"col_2": "Κλίβελαντ Κάβαλίερς",
"col_3": "37",
"col_4": "22",
"col_5": "63%",
"col_6": "9",
"col_7": "22-9",
"col_8": "15-13",
"col_9": "8-2",
"col_10": "W 4",
"col_11": ""
},
{
"team_id": 3262,
"col_1": "4",
"col_2": "Σικάγο Μπουλς",
"col_3": "36",
"col_4": "22",
"col_5": "62%",
"col_6": "9.5",
"col_7": "17-12",
"col_8": "19-10",
"col_9": "6-4",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3271,
"col_1": "5",
"col_2": "Ουάσινγκτον Γουίζαρντς",
"col_3": "33",
"col_4": "25",
"col_5": "57%",
"col_6": "12.5",
"col_7": "20-10",
"col_8": "13-15",
"col_9": "2-8",
"col_10": "L 5",
"col_11": ""
},
{
"team_id": 3266,
"col_1": "6",
"col_2": "Μιλγουόκι Μπακς",
"col_3": "32",
"col_4": "25",
"col_5": "56%",
"col_6": "13",
"col_7": "17-11",
"col_8": "15-14",
"col_9": "6-4",
"col_10": "W 1",
"col_11": ""
},
{
"team_id": 3269,
"col_1": "7",
"col_2": "Μαϊάμι Χιτ",
"col_3": "25",
"col_4": "31",
"col_5": "45%",
"col_6": "19.5",
"col_7": "10-16",
"col_8": "15-15",
"col_9": "5-5",
"col_10": "W 2",
"col_11": ""
},
{
"team_id": 3258,
"col_1": "8",
"col_2": "Μπρούκλιν Νετς",
"col_3": "23",
"col_4": "32",
"col_5": "42%",
"col_6": "21",
"col_7": "10-15",
"col_8": "13-17",
"col_9": "5-5",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3268,
"col_1": "9",
"col_2": "Σαρλότ Χόρνετς",
"col_3": "23",
"col_4": "32",
"col_5": "42%",
"col_6": "21",
"col_7": "13-16",
"col_8": "10-16",
"col_9": "4-6",
"col_10": "W 1",
"col_11": ""
},
{
"team_id": 3264,
"col_1": "10",
"col_2": "Ντιτρόιτ Πίστονς",
"col_3": "23",
"col_4": "34",
"col_5": "40%",
"col_6": "22",
"col_7": "12-19",
"col_8": "11-15",
"col_9": "6-4",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3265,
"col_1": "11",
"col_2": "Ιντιάνα Πέισερς",
"col_3": "23",
"col_4": "34",
"col_5": "40%",
"col_6": "22",
"col_7": "12-14",
"col_8": "11-20",
"col_9": "7-3",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3257,
"col_1": "12",
"col_2": "Μπόστον Σέλτικς",
"col_3": "22",
"col_4": "33",
"col_5": "40%",
"col_6": "22",
"col_7": "13-15",
"col_8": "9-18",
"col_9": "7-3",
"col_10": "W 2",
"col_11": ""
},
{
"team_id": 3270,
"col_1": "13",
"col_2": "Ορλάντο Μάτζικ",
"col_3": "19",
"col_4": "40",
"col_5": "32%",
"col_6": "27",
"col_7": "9-19",
"col_8": "10-21",
"col_9": "3-7",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3260,
"col_1": "14",
"col_2": "Φιλαδέλφεια 76ερς",
"col_3": "12",
"col_4": "45",
"col_5": "21%",
"col_6": "33",
"col_7": "7-20",
"col_8": "5-25",
"col_9": "2-8",
"col_10": "L 5",
"col_11": ""
},
{
"team_id": 3259,
"col_1": "15",
"col_2": "Νιου Γιορκ Νικς",
"col_3": "10",
"col_4": "46",
"col_5": "18%",
"col_6": "34.5",
"col_7": "7-21",
"col_8": "3-25",
"col_9": "1-9",
"col_10": "L 8",
"col_11": ""
}
],
"legend": []
},
{
"definition": {
"column_number": 11,
"section_title": "NBA Δύση",
"section_id": "standings"
},
"headers": [
"",
"Ομάδα",
"Ν",
"Η",
"Ν%",
"GB",
"ΕΝ",
"ΕΚ",
"L10",
"ST",
""
],
"data": [
{
"team_id": 3277,
"col_1": "1",
"col_2": "Γκ. Στ. Γουόριορς",
"col_3": "44",
"col_4": "11",
"col_5": "80%",
"col_6": "0.0",
"col_7": "24-2",
"col_8": "20-9",
"col_9": "7-3",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3284,
"col_1": "2",
"col_2": "Μέμφις Γκρίζλις",
"col_3": "41",
"col_4": "15",
"col_5": "73%",
"col_6": "3.5",
"col_7": "23-5",
"col_8": "18-10",
"col_9": "7-3",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3283,
"col_1": "3",
"col_2": "Χιούστον Ρόκετς",
"col_3": "39",
"col_4": "18",
"col_5": "68%",
"col_6": "6",
"col_7": "21-8",
"col_8": "18-10",
"col_9": "6-4",
"col_10": "W 3",
"col_11": ""
},
{
"team_id": 3274,
"col_1": "4",
"col_2": "Πόρτλαντ Τρέιλ Μπλέιζερς",
"col_3": "37",
"col_4": "19",
"col_5": "66%",
"col_6": "7.5",
"col_7": "24-6",
"col_8": "13-13",
"col_9": "6-4",
"col_10": "W 1",
"col_11": ""
},
{
"team_id": 3282,
"col_1": "5",
"col_2": "Ντάλας Μάβερικς",
"col_3": "39",
"col_4": "21",
"col_5": "65%",
"col_6": "7.5",
"col_7": "20-9",
"col_8": "19-12",
"col_9": "5-5",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3278,
"col_1": "6",
"col_2": "Λ.A. Κλίπερς",
"col_3": "37",
"col_4": "21",
"col_5": "64%",
"col_6": "8.5",
"col_7": "23-8",
"col_8": "14-13",
"col_9": "4-6",
"col_10": "L 2",
"col_11": ""
},
{
"team_id": 3286,
"col_1": "7",
"col_2": "Σαν Αντόνιο Σπερς",
"col_3": "34",
"col_4": "23",
"col_5": "60%",
"col_6": "11",
"col_7": "20-7",
"col_8": "14-16",
"col_9": "4-6",
"col_10": "L 4",
"col_11": ""
},
{
"team_id": 4434,
"col_1": "8",
"col_2": "Οκλαχόμα Σίτι Θάντερ",
"col_3": "32",
"col_4": "26",
"col_5": "55%",
"col_6": "13.5",
"col_7": "19-8",
"col_8": "13-18",
"col_9": "9-1",
"col_10": "W 7",
"col_11": ""
},
{
"team_id": 3285,
"col_1": "9",
"col_2": "Νιού Ορλίνς Πέλικανς",
"col_3": "30",
"col_4": "27",
"col_5": "53%",
"col_6": "15",
"col_7": "19-10",
"col_8": "11-17",
"col_9": "5-5",
"col_10": "W 3",
"col_11": ""
},
{
"team_id": 3280,
"col_1": "10",
"col_2": "Φοίνιξ Σανς",
"col_3": "31",
"col_4": "28",
"col_5": "53%",
"col_6": "15",
"col_7": "17-12",
"col_8": "14-16",
"col_9": "2-8",
"col_10": "W 1",
"col_11": ""
},
{
"team_id": 3276,
"col_1": "11",
"col_2": "Γιούτα Τζαζ",
"col_3": "21",
"col_4": "35",
"col_5": "38%",
"col_6": "23.5",
"col_7": "12-16",
"col_8": "9-19",
"col_9": "5-5",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3281,
"col_1": "12",
"col_2": "Σακραμέντο Κινγκς",
"col_3": "20",
"col_4": "35",
"col_5": "36%",
"col_6": "24",
"col_7": "13-17",
"col_8": "7-18",
"col_9": "4-6",
"col_10": "W 1",
"col_11": ""
},
{
"team_id": 3272,
"col_1": "13",
"col_2": "Ντένβερ Νάγκετς",
"col_3": "20",
"col_4": "37",
"col_5": "35%",
"col_6": "25",
"col_7": "12-16",
"col_8": "8-21",
"col_9": "1-9",
"col_10": "L 4",
"col_11": ""
},
{
"team_id": 3279,
"col_1": "14",
"col_2": "Λ.A. Λέικερς",
"col_3": "15",
"col_4": "41",
"col_5": "27%",
"col_6": "29.5",
"col_7": "8-19",
"col_8": "7-22",
"col_9": "3-7",
"col_10": "W 2",
"col_11": ""
},
{
"team_id": 3273,
"col_1": "15",
"col_2": "Μινεσότα Τίμπεργουλβς",
"col_3": "13",
"col_4": "43",
"col_5": "23%",
"col_6": "31.5",
"col_7": "8-21",
"col_8": "5-22",
"col_9": "5-5",
"col_10": "W 1",
"col_11": ""
}
],
"legend": []
},
{
"definition": {
"column_number": 11,
"section_title": "ΝΒΑ Ατλάντικ",
"section_id": "standings"
},
"headers": [
"",
"Ομάδα",
"Ν",
"Η",
"Ν%",
"GB",
"ΕΝ",
"ΕΚ",
"L10",
"ST",
""
],
"data": [
{
"team_id": 3261,
"col_1": "1",
"col_2": "Τορόντο Ράπτορς",
"col_3": "37",
"col_4": "20",
"col_5": "65%",
"col_6": "0.0",
"col_7": "21-9",
"col_8": "16-11",
"col_9": "5-5",
"col_10": "L 3",
"col_11": ""
},
{
"team_id": 3258,
"col_1": "2",
"col_2": "Μπρούκλιν Νετς",
"col_3": "23",
"col_4": "32",
"col_5": "42%",
"col_6": "13",
"col_7": "10-15",
"col_8": "13-17",
"col_9": "5-5",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3257,
"col_1": "3",
"col_2": "Μπόστον Σέλτικς",
"col_3": "22",
"col_4": "33",
"col_5": "40%",
"col_6": "14",
"col_7": "13-15",
"col_8": "9-18",
"col_9": "7-3",
"col_10": "W 2",
"col_11": ""
},
{
"team_id": 3260,
"col_1": "4",
"col_2": "Φιλαδέλφεια 76ερς",
"col_3": "12",
"col_4": "45",
"col_5": "21%",
"col_6": "25",
"col_7": "7-20",
"col_8": "5-25",
"col_9": "2-8",
"col_10": "L 5",
"col_11": ""
},
{
"team_id": 3259,
"col_1": "5",
"col_2": "Νιου Γιορκ Νικς",
"col_3": "10",
"col_4": "46",
"col_5": "18%",
"col_6": "26.5",
"col_7": "7-21",
"col_8": "3-25",
"col_9": "1-9",
"col_10": "L 8",
"col_11": ""
}
],
"legend": []
},
{
"definition": {
"column_number": 11,
"section_title": "NBA Σεντραλ",
"section_id": "standings"
},
"headers": [
"",
"Ομάδα",
"Ν",
"Η",
"Ν%",
"GB",
"ΕΝ",
"ΕΚ",
"L10",
"ST",
""
],
"data": [
{
"team_id": 3263,
"col_1": "1",
"col_2": "Κλίβελαντ Κάβαλίερς",
"col_3": "37",
"col_4": "22",
"col_5": "63%",
"col_6": "0.0",
"col_7": "22-9",
"col_8": "15-13",
"col_9": "8-2",
"col_10": "W 4",
"col_11": ""
},
{
"team_id": 3262,
"col_1": "2",
"col_2": "Σικάγο Μπουλς",
"col_3": "36",
"col_4": "22",
"col_5": "62%",
"col_6": "0.5",
"col_7": "17-12",
"col_8": "19-10",
"col_9": "6-4",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3266,
"col_1": "3",
"col_2": "Μιλγουόκι Μπακς",
"col_3": "32",
"col_4": "25",
"col_5": "56%",
"col_6": "4",
"col_7": "17-11",
"col_8": "15-14",
"col_9": "6-4",
"col_10": "W 1",
"col_11": ""
},
{
"team_id": 3264,
"col_1": "4",
"col_2": "Ντιτρόιτ Πίστονς",
"col_3": "23",
"col_4": "34",
"col_5": "40%",
"col_6": "13",
"col_7": "12-19",
"col_8": "11-15",
"col_9": "6-4",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3265,
"col_1": "5",
"col_2": "Ιντιάνα Πέισερς",
"col_3": "23",
"col_4": "34",
"col_5": "40%",
"col_6": "13",
"col_7": "12-14",
"col_8": "11-20",
"col_9": "7-3",
"col_10": "L 1",
"col_11": ""
}
],
"legend": []
},
{
"definition": {
"column_number": 11,
"section_title": "NBA Σάουθιστ",
"section_id": "standings"
},
"headers": [
"",
"Ομάδα",
"Ν",
"Η",
"Ν%",
"GB",
"ΕΝ",
"ΕΚ",
"L10",
"ST",
""
],
"data": [
{
"team_id": 3267,
"col_1": "1",
"col_2": "Ατλάντα Χοκς",
"col_3": "45",
"col_4": "12",
"col_5": "79%",
"col_6": "0.0",
"col_7": "26-4",
"col_8": "19-8",
"col_9": "6-4",
"col_10": "W 2",
"col_11": ""
},
{
"team_id": 3271,
"col_1": "2",
"col_2": "Ουάσινγκτον Γουίζαρντς",
"col_3": "33",
"col_4": "25",
"col_5": "57%",
"col_6": "12.5",
"col_7": "20-10",
"col_8": "13-15",
"col_9": "2-8",
"col_10": "L 5",
"col_11": ""
},
{
"team_id": 3269,
"col_1": "3",
"col_2": "Μαϊάμι Χιτ",
"col_3": "25",
"col_4": "31",
"col_5": "45%",
"col_6": "19.5",
"col_7": "10-16",
"col_8": "15-15",
"col_9": "5-5",
"col_10": "W 2",
"col_11": ""
},
{
"team_id": 3268,
"col_1": "4",
"col_2": "Σαρλότ Χόρνετς",
"col_3": "23",
"col_4": "32",
"col_5": "42%",
"col_6": "21",
"col_7": "13-16",
"col_8": "10-16",
"col_9": "4-6",
"col_10": "W 1",
"col_11": ""
},
{
"team_id": 3270,
"col_1": "5",
"col_2": "Ορλάντο Μάτζικ",
"col_3": "19",
"col_4": "40",
"col_5": "32%",
"col_6": "27",
"col_7": "9-19",
"col_8": "10-21",
"col_9": "3-7",
"col_10": "L 1",
"col_11": ""
}
],
"legend": []
},
{
"definition": {
"column_number": 11,
"section_title": "NBA Νόρθγουεστ",
"section_id": "standings"
},
"headers": [
"",
"Ομάδα",
"Ν",
"Η",
"Ν%",
"GB",
"ΕΝ",
"ΕΚ",
"L10",
"ST",
""
],
"data": [
{
"team_id": 3274,
"col_1": "1",
"col_2": "Πόρτλαντ Τρέιλ Μπλέιζερς",
"col_3": "37",
"col_4": "19",
"col_5": "66%",
"col_6": "0.0",
"col_7": "24-6",
"col_8": "13-13",
"col_9": "6-4",
"col_10": "W 1",
"col_11": ""
},
{
"team_id": 4434,
"col_1": "2",
"col_2": "Οκλαχόμα Σίτι Θάντερ",
"col_3": "32",
"col_4": "26",
"col_5": "55%",
"col_6": "6",
"col_7": "19-8",
"col_8": "13-18",
"col_9": "9-1",
"col_10": "W 7",
"col_11": ""
},
{
"team_id": 3276,
"col_1": "3",
"col_2": "Γιούτα Τζαζ",
"col_3": "21",
"col_4": "35",
"col_5": "38%",
"col_6": "16",
"col_7": "12-16",
"col_8": "9-19",
"col_9": "5-5",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3272,
"col_1": "4",
"col_2": "Ντένβερ Νάγκετς",
"col_3": "20",
"col_4": "37",
"col_5": "35%",
"col_6": "17.5",
"col_7": "12-16",
"col_8": "8-21",
"col_9": "1-9",
"col_10": "L 4",
"col_11": ""
},
{
"team_id": 3273,
"col_1": "5",
"col_2": "Μινεσότα Τίμπεργουλβς",
"col_3": "13",
"col_4": "43",
"col_5": "23%",
"col_6": "24",
"col_7": "8-21",
"col_8": "5-22",
"col_9": "5-5",
"col_10": "W 1",
"col_11": ""
}
],
"legend": []
},
{
"definition": {
"column_number": 11,
"section_title": "NBA Πασίφικ",
"section_id": "standings"
},
"headers": [
"",
"Ομάδα",
"Ν",
"Η",
"Ν%",
"GB",
"ΕΝ",
"ΕΚ",
"L10",
"ST",
""
],
"data": [
{
"team_id": 3277,
"col_1": "1",
"col_2": "Γκ. Στ. Γουόριορς",
"col_3": "44",
"col_4": "11",
"col_5": "80%",
"col_6": "0.0",
"col_7": "24-2",
"col_8": "20-9",
"col_9": "7-3",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3278,
"col_1": "2",
"col_2": "Λ.A. Κλίπερς",
"col_3": "37",
"col_4": "21",
"col_5": "64%",
"col_6": "8.5",
"col_7": "23-8",
"col_8": "14-13",
"col_9": "4-6",
"col_10": "L 2",
"col_11": ""
},
{
"team_id": 3280,
"col_1": "3",
"col_2": "Φοίνιξ Σανς",
"col_3": "31",
"col_4": "28",
"col_5": "53%",
"col_6": "15",
"col_7": "17-12",
"col_8": "14-16",
"col_9": "2-8",
"col_10": "W 1",
"col_11": ""
},
{
"team_id": 3281,
"col_1": "4",
"col_2": "Σακραμέντο Κινγκς",
"col_3": "20",
"col_4": "35",
"col_5": "36%",
"col_6": "24",
"col_7": "13-17",
"col_8": "7-18",
"col_9": "4-6",
"col_10": "W 1",
"col_11": ""
},
{
"team_id": 3279,
"col_1": "5",
"col_2": "Λ.A. Λέικερς",
"col_3": "15",
"col_4": "41",
"col_5": "27%",
"col_6": "29.5",
"col_7": "8-19",
"col_8": "7-22",
"col_9": "3-7",
"col_10": "W 2",
"col_11": ""
}
],
"legend": []
},
{
"definition": {
"column_number": 11,
"section_title": "NBA Σάουθγουεστ",
"section_id": "standings"
},
"headers": [
"",
"Ομάδα",
"Ν",
"Η",
"Ν%",
"GB",
"ΕΝ",
"ΕΚ",
"L10",
"ST",
""
],
"data": [
{
"team_id": 3284,
"col_1": "1",
"col_2": "Μέμφις Γκρίζλις",
"col_3": "41",
"col_4": "15",
"col_5": "73%",
"col_6": "0.0",
"col_7": "23-5",
"col_8": "18-10",
"col_9": "7-3",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3283,
"col_1": "2",
"col_2": "Χιούστον Ρόκετς",
"col_3": "39",
"col_4": "18",
"col_5": "68%",
"col_6": "2.5",
"col_7": "21-8",
"col_8": "18-10",
"col_9": "6-4",
"col_10": "W 3",
"col_11": ""
},
{
"team_id": 3282,
"col_1": "3",
"col_2": "Ντάλας Μάβερικς",
"col_3": "39",
"col_4": "21",
"col_5": "65%",
"col_6": "4",
"col_7": "20-9",
"col_8": "19-12",
"col_9": "5-5",
"col_10": "L 1",
"col_11": ""
},
{
"team_id": 3286,
"col_1": "4",
"col_2": "Σαν Αντόνιο Σπερς",
"col_3": "34",
"col_4": "23",
"col_5": "60%",
"col_6": "7.5",
"col_7": "20-7",
"col_8": "14-16",
"col_9": "4-6",
"col_10": "L 4",
"col_11": ""
},
{
"team_id": 3285,
"col_1": "5",
"col_2": "Νιού Ορλίνς Πέλικανς",
"col_3": "30",
"col_4": "27",
"col_5": "53%",
"col_6": "11.5",
"col_7": "19-10",
"col_8": "11-17",
"col_9": "5-5",
"col_10": "W 3",
"col_11": ""
}
],
"legend": []
}
]
}
]
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.