NSJSONSerialization.JSONObjectWithData更改字段类型

时间:2015-05-26 06:42:37

标签: objective-c swift nsstring nsdictionary nsdata

我从服务器获得以下JSON响应:

{
   "userId":"123456789",
   "displayName":"display name"
}

当我使用NSJSONSerialization.JSONObjectWithData然后打印结果NSDictionary时,我在控制台中看到以下内容:

  

userId = 123456789   displayName ="显示名称"

为什么JSONObjectWithData会将userId字段类型从字符串更改为数字?

2 个答案:

答案 0 :(得分:1)

它没有。 JSON反序列化尊重数据类型并将维护它。您无法从简单的描述日志中告诉数据类型,您需要实际查询该类。描述日志会引用一些内容,如果它对人类读者更有意义,比如描述中的空格,但在某些情况下也会省略引号。

答案 1 :(得分:1)

没有。

不要从日志表示中推断变量类型,只需测试。用这个来训练游乐场,例如:

    <script>
    $(function() {
        $('a[href*=#]:not([href=#])').click(function() {
            if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
                var target = $(this.hash);
                target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
                if (target.length) {
                    $('html,body').animate({
                        scrollTop: target.offset().top 
                    }, 1000);
                    return false;
                }
            }
        });
    });
</script>
<script src="js/scroll-startstop.events.jquery.js" type="text/javascript"></script>
<script>
    $(function() {
        var $elem = $('#content');

        $('#nav_up').fadeIn('slow');
        $('#nav_down').fadeIn('slow');  

        $(window).bind('scrollstart', function(){
            $('#nav_up,#nav_down').stop().animate({'opacity':'0.2'});
        });
        $(window).bind('scrollstop', function(){
            $('#nav_up,#nav_down').stop().animate({'opacity':'1'});
        });

        $('#nav_down').click(
            function (e) {
                $('html, body').animate({scrollTop: $elem.height()}, 800);
            }
            );
        $('#nav_up').click(
            function (e) {
                $('html, body').animate({scrollTop: '0px'}, 800);
            }
            );
    });
</script>