关于json.dumps()和json.loads()



  • 我在python直接run dumps()和loads()那两行代码(如下),为什么最后得到的symbol和LastTradeDateTime前有个u,which seems to be reasonable as the original result of getQuotes() is like that, 但是为什么dumps()后的string经过kafka传给consumer再loads()来的object里get出来的symbol和LastTradeDateTime前就没有u了?

    >>> getQuotes(‘AAPL’)
    [{u’Index’: u’NASDAQ’, u’LastTradeWithCurrency’: u’113.05’, u’LastTradeDateTime’: u’2016-09-30T16:00:02Z’, u’LastTradePrice’: u’113.05’, u’LastTradeTime’: u’4:00PM EDT’, u’LastTradeDateTimeLong’: u’Sep 30, 4:00PM EDT’, u’StockSymbol’: u’AAPL’, u’ID’: u’22144’}]

    >>> price = json.dumps(getQuotes(‘AAPL’))
    >>> price
    ’[{“Index”: “NASDAQ”, “LastTradeWithCurrency”: “113.05”, “LastTradeDateTime”: “2016-09-30T16:00:02Z”, “LastTradePrice”: “113.05”, “LastTradeTime”: “4:00PM EDT”, “LastTradeDateTimeLong”: “Sep 30, 4:00PM EDT”, “StockSymbol”: “AAPL”, “ID”: “22144”}]’

    >>> parsed = json.loads(price)[0]
    >>> symbol = parsed.get(‘StockSymbol’)
    >>> symbol
    u’AAPL’
    >>> price = float(parsed.get(‘LastTradePrice’))
    >>> price
    113.05
    >>> tradetime = parsed.get(‘LastTradeDateTime’)
    >>> tradetime
    u’2016-09-30T16:00:02Z’


  • cid:76:privileges:topics:read

    @al2o3hyn

    在Python,尤其是Python2中,字符串前面加u表示该字符串用的是unicode编码方式。一般用json库拿出来的json都会有u在前面。所以比如getQuots(‘AAPL’)会有u,然后parsed.get(‘StockSymbol’)也会有u。

    然后其实json.loads(price)[0]里面的数据如果你用terminal打印出来的话,其实会发现其实前面还是都会有u。那么为什么在parsed.get(‘StockSymbol’)用StockSymbol而不是u'StockSymbol'呢?这是因为在操作Python dict的时候,Python会自动对unicode和ASCII编码的字符串进行转换。这也就是为什么你可以用StockSymbol也就是ASCII编码的字符串来指代u'StockSymbol'


登录后回复
 

与 BitTiger Community 的连接断开,我们正在尝试重连,请耐心等待