【问题标题】:ios LINESTRING parsingios LINESTRING解析
【发布时间】:2012-08-13 15:22:22
【问题描述】:

我一直在为 iOS 的谷歌地图定制路线。

如何解析 LINESTRING 中传入的 JSON??

我的 LINESTRING:

"coordInfo": "LINESTRING (28.646751729297 40.9993029074749, 28.6470087874434 40.9995465119554, 28.6470087874434 40.9995465119554, 28.6474633603416 41.0000088561426)"
    },

【问题讨论】:

    标签: ios xcode json parsing map


    【解决方案1】:

    从您发布的内容看来,objectForKey@"coordInfo" 为您提供了一个带有括号中数字的字符串。您可以使用 NSString 方法 componentsSeparatedByCharactersInSet 对其进行解析:传递包含左右括号、逗号和空格的集合以生成单个数字字符串的数组(以及单词“LINESTRING”作为数组中的第一个字符串) .该数组还将包含一些空字符串,其中 2 个分隔字符在一起(如逗号和空格),因此在将对象从数组中取出时必须进行测试。

    你也可以像这样使用 NSScanner:

    NSString *toParse = @"LINESTRING (28.646751729297 40.9993029074749, 28.6470087874434 40.9995465119554, 28.6470087874434 40.9995465119554, 28.6474633603416 41.0000088561426)";
        NSScanner *scanner = [NSScanner scannerWithString:toParse];
        double num;
        while (! [scanner isAtEnd]) {
          [scanner scanUpToCharactersFromSet:[NSCharacterSet decimalDigitCharacterSet] intoString:nil];
          [scanner scanDouble:&num];
          // put numbers into an array here or use them somehow
          NSLog(@"%f",num);
        }
    

    【讨论】:

    • 尝试了您的代码,但它记录了最后一个数字两次(可能是末尾的“)”),将其添加到 IF 中为我修复了它:while (![scanner isAtEnd] &&scanner. scanLocation
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-11
    • 2012-04-29
    • 2019-01-08
    • 2015-09-27
    • 1970-01-01
    相关资源
    最近更新 更多