Skip to content

Commit bd3167d

Browse files
author
wushangkun
committed
fix json string contain "," invalid json error.
1 parent af2014b commit bd3167d

File tree

2 files changed

+51
-28
lines changed

2 files changed

+51
-28
lines changed

SKGenerateModelTool/SKCodeBuilder.swift

Lines changed: 50 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class SKCodeBuilder: NSObject {
3939
lazy var fromJsonString = NSMutableString()
4040
lazy var toJsonString = NSMutableString()
4141

42-
var fileTye:String {
42+
var fileType:String {
4343
get {
4444
if config.codeType == .Swift { return "swift" }
4545
else if config.codeType == .Dart { return "dart" }
@@ -56,6 +56,8 @@ class SKCodeBuilder: NSObject {
5656
toJsonString = ""
5757
let hString = NSMutableString()
5858
let mString = NSMutableString()
59+
let fileName = (config.codeType == .Dart) ? config.rootModelName.underscore_name : config.rootModelName
60+
5961
handleDictValue(dictValue: jsonObj, key: "", hString: hString, mString: mString)
6062
if config.codeType == .OC {
6163
if config.superClassName == "NSObject" {
@@ -69,10 +71,9 @@ class SKCodeBuilder: NSObject {
6971
hString.insert("\nimport HandyJSON\n\n", at: 0)
7072
}
7173
} else if config.codeType == .Dart {
72-
hString.insert("\npart '\(config.rootModelName).m.dart';\n\n", at: 0)
73-
mString.insert("\npart of '\(config.rootModelName).dart';\n\n", at: 0)
74+
hString.insert("\npart '\(fileName).m.dart';\n\n", at: 0)
75+
mString.insert("\npart of '\(fileName).dart';\n\n", at: 0)
7476
}
75-
7677
let dateFormatter = DateFormatter()
7778
dateFormatter.dateFormat = "yyyy/MM/dd"
7879
let time = dateFormatter.string(from: Date())
@@ -81,22 +82,22 @@ class SKCodeBuilder: NSObject {
8182
let hCommentString =
8283
"""
8384
//
84-
// \(config.rootModelName).\(fileTye)
85+
// \(fileName).\(fileType)
8586
// SKGenerateModelTool
8687
//
8788
// Created by \(config.authorName) on \(time).
8889
// Copyright © \(year) SKGenerateModelTool. All rights reserved.
8990
//\n
9091
"""
9192

92-
var fileName = "m"
93+
var fileSuffixName = "m"
9394
if config.codeType == .Dart {
94-
fileName = "m.dart"
95+
fileSuffixName = "m.dart"
9596
}
9697
let mCommentString =
9798
"""
9899
//
99-
// \(config.rootModelName).\(fileName)
100+
// \(fileName).\(fileSuffixName)
100101
// SKGenerateModelTool
101102
//
102103
// Created by \(config.authorName) on \(time).
@@ -113,7 +114,6 @@ class SKCodeBuilder: NSObject {
113114

114115
func generateFile(with filePath:String?, hString:NSMutableString, mString:NSMutableString, complete:GenerateFileComplete?) {
115116
if hString.length > 0 && mString.length > 0 {
116-
117117
var filePath = filePath
118118
var success = false
119119
if filePath == nil {
@@ -135,17 +135,17 @@ class SKCodeBuilder: NSObject {
135135
}
136136
}
137137
}
138-
138+
let fileName = (config.codeType == .Dart) ? config.rootModelName.underscore_name : config.rootModelName
139139
var fileNameH = "", fileNameM = ""
140140
if let filePath = filePath {
141141
if config.codeType == .OC {
142-
fileNameH = filePath.appending("/\(config.rootModelName).h")
143-
fileNameM = filePath.appending("/\(config.rootModelName).m")
142+
fileNameH = filePath.appending("/\(fileName).h")
143+
fileNameM = filePath.appending("/\(fileName).m")
144144
} else if config.codeType == .Swift {
145-
fileNameH = filePath.appending("/\(config.rootModelName).swift")
145+
fileNameH = filePath.appending("/\(fileName).swift")
146146
} else if config.codeType == .Dart {
147-
fileNameH = filePath.appending("/\(config.rootModelName).dart")
148-
fileNameM = filePath.appending("/\(config.rootModelName).m.dart")
147+
fileNameH = filePath.appending("/\(fileName).dart")
148+
fileNameM = filePath.appending("/\(fileName).m.dart")
149149
}
150150
do {
151151
if !fileNameH.isBlank {
@@ -194,7 +194,6 @@ class SKCodeBuilder: NSObject {
194194
} else {
195195
hString.append("\nclass \(config.rootModelName) extends \(config.superClassName) {\n\n")
196196
}
197-
198197
} else { // sub model
199198
modelName = modelClassName(with: key)
200199
if config.superClassName.isBlank {
@@ -240,7 +239,6 @@ class SKCodeBuilder: NSObject {
240239
} else if config.codeType == .Dart {
241240
hString.append(" \(modelName) \(key);\n")
242241
self.yymodelPropertyGenericClassDicts.setValue(modelName, forKey: key)
243-
244242
let fString =
245243
"""
246244
if (json['\(key)'] != null) {
@@ -249,7 +247,6 @@ class SKCodeBuilder: NSObject {
249247
250248
"""
251249
fromJsonString.append(fString)
252-
253250
let tString =
254251
"""
255252
if (instance.\(key) != null) {
@@ -273,7 +270,6 @@ class SKCodeBuilder: NSObject {
273270
hString.append(" /// <#泛型#>\n var \(key): Any?\n")
274271
} else if config.codeType == .Dart {
275272
hString.append(" dynamic \(key); //<#泛型#>\n")
276-
277273
let fString =
278274
"""
279275
if (json['\(key)'] != null) {
@@ -282,15 +278,13 @@ class SKCodeBuilder: NSObject {
282278
283279
"""
284280
fromJsonString.append(fString)
285-
286281
let tString =
287282
"""
288283
if (instance.\(key) != null) {
289284
json['\(key)'] = instance.\(key);
290285
}
291286
292287
"""
293-
294288
toJsonString.append(tString)
295289
}
296290
}
@@ -319,15 +313,18 @@ class SKCodeBuilder: NSObject {
319313
if !key.isBlank {
320314
modelName = modelClassName(with: key)
321315
}
322-
let fromJsonString =
316+
let headerString =
323317
"""
324318
325319
\(modelName) fromJson(Map<String, dynamic> json) => _$\(modelName)FromJson(json, this);
326320
Map<String, dynamic> toJson() => _$\(modelName)ToJson(this);
327321
328322
"""
329-
hString.append(fromJsonString);
323+
hString.append(headerString);
330324
hString.append("}\n")
325+
326+
fromJsonString.append(" return instance;\n");
327+
toJsonString.append(" return json;\n");
331328
}
332329
if !key.isBlank {
333330
self.handleDicts.removeObject(forKey: key)
@@ -415,7 +412,6 @@ class SKCodeBuilder: NSObject {
415412
416413
"""
417414
fromJsonString.append(fString)
418-
419415
let tString =
420416
"""
421417
if (instance.\(key) != null) {
@@ -432,7 +428,6 @@ class SKCodeBuilder: NSObject {
432428
self.handleDicts.setValue(firstObject, forKey: key)
433429
self.yymodelPropertyGenericClassDicts.setValue(modeName, forKey: key)
434430
hString.append(" List<\(modeName)> \(key); \(singlelineCommentName(key, "", false))\n")
435-
436431
let fString =
437432
"""
438433
if (json['\(key)'] != null) {
@@ -853,5 +848,35 @@ extension String {
853848
}
854849
return self
855850
}
851+
852+
/// 驼峰转下划线
853+
var underscore_name: String {
854+
var name = ""
855+
if self.isBlank { return "" }
856+
var upperword = ""
857+
var _canAdd = false
858+
self.forEach { (character) in
859+
if character.isUppercase { // 大写
860+
if _canAdd {
861+
name.append("_\(character.lowercased())")
862+
} else {
863+
name.append("\(character.lowercased())")
864+
upperword.append(character)
865+
}
866+
} else { // 小写
867+
if !name.contains("_"){
868+
if upperword.count > 1 {
869+
let frontString = (name as NSString).substring(to: upperword.count-1)
870+
let lastString = (name as NSString).substring(from: upperword.count-1)
871+
name.removeAll()
872+
name.append("\(frontString)_\(lastString)")
873+
}
874+
}
875+
name.append(character)
876+
_canAdd = true
877+
}
878+
}
879+
return name
880+
}
856881
}
857882

SKGenerateModelTool/ViewController.swift

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,9 +117,7 @@ class ViewController: NSViewController, NSControlTextEditingDelegate {
117117

118118
if let jsonString = jsonTextView.textStorage?.string {
119119
if jsonString.isBlank { return }
120-
var trimmedStr = jsonString.trimmingCharacters(in: .whitespacesAndNewlines)
121-
trimmedStr = trimmedStr .replacingOccurrences(of: "", with: "\"")
122-
trimmedStr = trimmedStr .replacingOccurrences(of: "", with: ",")
120+
let trimmedStr = jsonString.trimmingCharacters(in: .whitespacesAndNewlines)
123121
let attriStr = NSMutableString(string: trimmedStr)
124122
var commentDicts:[String:String] = [:]
125123
attriStr.enumerateLines { (line, _) in

0 commit comments

Comments
 (0)