如何在ios中纠正此字符串格式错误

     2023-03-16     35

关键词:

【中文标题】如何在ios中纠正此字符串格式错误【英文标题】:How to rectify this string format error in ios 【发布时间】:2016-01-18 07:03:56 【问题描述】:

这是我的实际 json 响应:


"x": 
"user": 
"id": 1,
"name": "a"
,
"startday": "2016-01-10",
"status": "New",
"total": 1,
"time_entries": [

"id": 766,
"project": 
"id": 3,
"name": "b"
,
"issue": 
"id": 4
,
"user": 
"id": 1,
"name": "c"
,
"activity": 
"id": 8,
"name": "d"

"hours": 1,
"comments": "",
"spent_on": "2016-01-10"

]


我动态创建了这个响应,如下所示:

NSString * newstring = [NSString stringWithFormat:@"\\\"wk_time\\\":\%@\\\\"user\\\":\%@\\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"startday\\\":\\\"%@\\\",\\\"status\\\":\\\"%@\\\",\\\"total\\\":\%@\,\\\"time_entries\\\":[\\\"id\\\":766,\\\"project\\\":\%@\\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"issue\\\":\%@\\\\"id\\\":\%@\%@\,\\\"user\\\":\%@\\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"activity\\\":\%@\\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"hours\\\":\%@\,\\\"comments\\\":\%@\,\\\"spent_on\\\":\\\"%@\\\"\%@\",,,...];

然后,按照规定的格式进行:

NSString * newstring1 = [NSString stringWithFormat:@“\"@%@\"",newstring];
NSLog(@"%@",newstring1);

所以,响应是:

@"\"x\":\"user\":\"id\":1,\"name\":\"b\",\"startday\":\"2016-01-10\",\"status\":\"New\",\"total\":1.0,\"time_entries\":[\"id\":766,\"project\":\"id\":3,\"name\":\"a\",\"issue\":\"id\":4,\"user\":\"id\":1,\"name\":\"b\",\"activity\":\"id\":8,\"name\":\"c\",\"hours\":1.0,\"comments\":\"\",\"spent_on\":\"2016-01-10\"]”

如果我像这样静态发布此响应:

NSString * jsoncode =@"\"x\":\"user\":\"id\":1,\"name\":\"b\",\"startday\":\"2016-01-10\",\"status\":\"New\",\"total\":1.0,\"time_entries\":[\"id\":766,\"project\":\"id\":3,\"name\":\"a\",\"issue\":\"id\":4,\"user\":\"id\":1,\"name\":\"b\",\"activity\":\"id\":8,\"name\":\"c\",\"hours\":1.0,\"comments\":\"\",\"spent_on\":\"2016-01-10\"]";
NSData *objectData = [jsoncode  dataUsingEncoding:NSUTF8StringEncoding];
NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:objectData options:NSJSONReadingMutableContainers error:&jsonError];

它被序列化了。显示值。在这种情况下。但是像这样动态创建:

NSString * newstring = [NSString stringWithFormat:@"\\\"wk_time\\\":\%@\\\\"user\\\":\%@\\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"startday\\\":\\\"%@\\\",\\\"status\\\":\\\"%@\\\",\\\"total\\\":\%@\,\\\"time_entries\\\":[\\\"id\\\":766,\\\"project\\\":\%@\\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"issue\\\":\%@\\\\"id\\\":\%@\%@\,\\\"user\\\":\%@\\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"activity\\\":\%@\\\\"id\\\":\%@\,\\\"name\\\":\\\"%@\\\"\%@\,\\\"hours\\\":\%@\,\\\"comments\\\":\%@\,\\\"spent_on\\\":\\\"%@\\\"\%@\",,,...];
NSString * newstring1 = [NSString stringWithFormat:@"@\"%@\"",newstring];
NSError *error=nil;
NSData * objectData = [newstring1 dataUsingEncoding:NSUTF8StringEncoding];

日志显示数据值。 但是在这一步之后,

NSDictionary * json= [NSJSONSerialization JSONObjectWithData:objectData options:0 error:&error];

序列化后显示空值。

NSLog(@"%@",error);

在错误消息中显示此内容。

Error Domain=NSCocoaErrorDomain Code=3840 "无法执行该操作 完全的。 (Cocoa 错误 3840。)”(JSON 文本不是以数组开头或 允许未设置片段的对象和选项。) UserInfo=0x7fe0faa73210 NSDebugDescription=JSON 文本不是以数组或对象开头并且 允许未设置片段的选项。

关于转换成字典。

可能是什么错误。如何纠正它?请在这方面需要指导。提前感谢您的帮助。在做静态它工作,但动态创建它显示错误?如何纠正?

【问题讨论】:

建议在解析前检查jsonlint.com中的子字符串。您可能会知道哪里出了问题。 【参考方案1】:

您错过了activity 字典后面的,。我格式化了“JSON”。

  
   "x":  
      "user":  
         "id":1,
         "name":"a"
      ,
      "startday":"2016-01-10",
      "status":"New",
      "total":1,
      "time_entries":[  
           
            "id":766,
            "project":  
               "id":3,
               "name":"b"
            ,
            "issue":  
               "id":4
            ,
            "user":  
               "id":1,
               "name":"c"
            ,
            "activity":  
               "id":8,
               "name":"d"
            ,
            "hours":1,
            "comments":"",
            "spent_on":"2016-01-10"
         
      ]
   

您最终需要检查有许多网站和附加组件。推荐一个是https://jsonformatter.curiousconcept.com/

Chrome 扩展名是:JSON 编辑器

【讨论】:

\"x\":\"user\":\"id\":1,\"name\":\"a\",\"startday\": \"2016-01-10\",\"status\":\"New\",\"total\":1.0,\"time_entries\":[\"id\":766,\"project\ ":\"id\":3,\"name\":\"a\",\"issue\":\"id\":4,\"user\":\"id \":1,\"name\":\"b\",\"activity\":\"id\":8,\"name\":\"c\",\"hours\ ":1.0,\"cmets\":\"\",\"spent_on\":\"2016-01-10\"] 如果我只把它放在静态数据中......它得到序列化并显示值..我没有缺少逗号或其他东西

如何使用边界矩形纠正 OCR 分割错误?

...分段错误,并且“显然”属于一起的字符被拆分为单独的字符串。根据在一个文本行中找到的字符列表及其边界框和初步OCR结果提示,这些字符中的哪些属于一个单词, 查看详情

如何在 XAML 中格式化此字符串?

】如何在XAML中格式化此字符串?【英文标题】:HowcanIformatthisstringinXAML?【发布时间】:2021-05-1115:43:21【问题描述】:我正在尝试将使用Winforms中的部件的程序转换为WPF。我在这部分遇到了一些麻烦。程序这样做:this.textBox.Properti... 查看详情

如何纠正jsp中的数据库连接错误?

】如何纠正jsp中的数据库连接错误?【英文标题】:Howtorectifythedatabaseconnectivityerrorinjsp?【发布时间】:2011-09-1311:48:27【问题描述】:我编写了一个代码jsp来将员工详细信息存储在数据库中。我在该员工数据库中创建了一个名为... 查看详情

如何纠正 Python 中 OR 工具中的目标函数错误?

】如何纠正Python中OR工具中的目标函数错误?【英文标题】:HowcanIcorrectobjectivefunctionerrorinORToolsinPython?【发布时间】:2022-01-0900:04:22【问题描述】:我正在使用OR工具解决0-1背包问题的变体。我已经设法解决了一种类型的变化,... 查看详情

如何解决此错误“格式错误的 URL”?

...时间】:2011-06-0814:19:05【问题描述】:我想传递一个参数字符串包括样式标签,例如:a:"<fontcolor=blue>testing!@#$%^&*()_+|:"<>?-=[]\\;\',./"我正在使用decodeURI来传递字符串。但在e 查看详情

如何在java中检查字符串是否采用此格式的mm-yy?

我必须在数据库中添加一个格式为“MM-YY”的字符串,表示信用卡的到期日期,其中MM是月份,YY是年份的最后两位数字,如何检查字符串是否在这个Java中的特定格式?答案使用正则表达式:StringmyString="12-99";if(myString.matches("((0[1-... 查看详情

如何在 iOS 的 UIWebView 中更改数字和电子邮件的颜色?

...间】:2013-11-1710:21:09【问题描述】:我有一个包含标签的字符串。我正在将此字符串加载到UIWebView。在此之前我是这样格式化的NSString*htmlContentString=[NSStringstringWithForm 查看详情

如何纠正自动生成的 IMarketBillingService.java 文件中的错误?

】如何纠正自动生成的IMarketBillingService.java文件中的错误?【英文标题】:HowtorectifytheerrorsintheautogeneratedIMarketBillingService.javafile?【发布时间】:2012-11-0506:57:15【问题描述】:我正在尝试在我的Andorid应用程序中实现Inappbilling服务... 查看详情

如何纠正 R 函数中的变异和过滤错误

】如何纠正R函数中的变异和过滤错误【英文标题】:HowcanIcorrectthemutateandfiltererrorsinmyRfunction【发布时间】:2021-06-2601:20:10【问题描述】:我有一个函数,它接受一个数据框和两个其他变量(horse和race_date)作为输入。horse和race_da... 查看详情

如何纠正ios中扩展权限的警告

】如何纠正ios中扩展权限的警告【英文标题】:howtorectifythewarningforextendedpermissioninios【发布时间】:2014-08-2907:11:26【问题描述】:-(void)authenticateUserWithCallbackObject:(id)anObjectandSelector:(SEL)selectorandExtendedPermissions:(NSString*)exte 查看详情

如何纠正强化给出的路径操作错误?

】如何纠正强化给出的路径操作错误?【英文标题】:HowtocorrectPathManipulationerrorgivenbyfortify?【发布时间】:2014-09-0721:05:36【问题描述】:我需要读取保存在user_home文件夹中的属性文件。PropsFile=System.getProperty("user.home")+System.getPrope... 查看详情

如何纠正 Redux 商店中的 React-Redux-Firebase 错误

】如何纠正Redux商店中的React-Redux-Firebase错误【英文标题】:HowtocorrecterrorwithReact-Redux-FirebaseinReduxstore【发布时间】:2019-03-1522:34:40【问题描述】:我正在尝试使用以下代码在Redux商店中实现React-Redux-Firebase:store.jsimportapplyMiddleware... 查看详情

如何通过读取环境对象来纠正此问题? (SwiftUI 并且在没有 SceneDelegate 的情况下工作)

】如何通过读取环境对象来纠正此问题?(SwiftUI并且在没有SceneDelegate的情况下工作)【英文标题】:HowdoIcorrectthisissuewithreadinganEnvironmentObject?(SwiftUIandworkingwithoutaSceneDelegate)【发布时间】:2021-01-1620:17:53【问题描述】:我想为登... 查看详情

如何纠正android studio中的缩进[重复]

】如何纠正androidstudio中的缩进[重复]【英文标题】:Howtocorrectindentationinandroidstudio[duplicate]【发布时间】:2015-11-0706:08:15【问题描述】:在Eclipse中,我们可以通过按Ctrl+Shift+F来纠正缩进。如何在androidstudio中更正缩进(格式代码)... 查看详情

如何在 Swift 中将此日期字符串格式“2018-03-30T14:36:10.093”格式化为日期 [重复]

】如何在Swift中将此日期字符串格式“2018-03-30T14:36:10.093”格式化为日期[重复]【英文标题】:Howtoformatthisdatestringformat"2018-03-30T14:36:10.093"intoDateinSwift[duplicate]【发布时间】:2020-01-0918:13:54【问题描述】:我正在尝试在Swift... 查看详情

如何纠正棘轮中的[PHP致命错误:未找到接口'Ratchet\MessageComponentInterface']

】如何纠正棘轮中的[PHP致命错误:未找到接口\\\'Ratchet\\\\MessageComponentInterface\\\']【英文标题】:Howtorectify[PHPFatalerror:Interface\'Ratchet\\MessageComponentInterface\'notfound]inratchet如何纠正棘轮中的[PHP致命错误:未找到接口\'Ratchet\\MessageCompo... 查看详情

滥用指针会产生分段错误。我仍然不确定如何纠正它

】滥用指针会产生分段错误。我仍然不确定如何纠正它【英文标题】:Misuseofapointerisproducingasegmentationfault.I\'mstillnotsurehowtocorrectitthough【发布时间】:2020-05-3000:48:28【问题描述】:阅读后,我觉得我明白这里出了什么问题,但我... 查看详情

我使用堆栈在此代码中遇到分段错误

...情况下删除堆栈中的中间元素。我遇到分段错误。帮助我纠正我的代码中的错误。voiddeleteMid(stack<char>&st,intn,inttemp=0)charx=st 查看详情