2014-02-10 52 views
1

我知道有几个关于这方面的问题和答案,但我不能确定任何这些会帮助我。python对象的JSON编码?

所以这是我的情况,我使用sympy库等极少数numpy功能了。 我从node.js调用了这些关于某些web应用程序的想法,所以我期望以json格式接收任何结果。

我在这里面对的两个主要问题:

  1. 而不是整个sympy东西正好是普通花车,甚至字符串。
  2. 解决了JSON编码问题之后,是否可以生成JavaScript等效的浮点数以进行非常简单的管理?

详细我与泰勒和系列节目(已编码)的工作现在越来越了解这一行的结果,对应于numpy的功能:

puntosX = linspace(a,b,num=puntos).round(3) 

我不能把它转化为一个JSON列表,puntosX将输出的打印:

[-10. -7.778 -5.556 -3.333 -1.111 1.111 3.333 5.556 7.778 10. ] 

当我生成表达式的阵列通过这条线:

sumterms.append((fx.diff(w,i)/factorial(i)) * (x)**i) 

偏偏在这种情况下,同样存在sumters:

[x**3 - x - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

所以,在一个非常简单的黑盒子计算策略,这将意味着,得到第一个列表中的所有元素是花车和所有从第二个列表是字符串。我认为任何lambda喜欢线会有所帮助。

但是,有没有什么办法可以告诉jsondemjson包?

回答

1

将您的numpy数组转换为列表可行(如果有json版本直接处理数组,它可能正在进行此转换)。在这里,我正在处理一个二维数组示例。

In [8]: x=np.linspace(0,1,10).reshape(2,5).round(3) 

In [9]: x 
Out[9]: 
array([[ 0. , 0.111, 0.222, 0.333, 0.444], 
     [ 0.556, 0.667, 0.778, 0.889, 1. ]]) 

In [10]: json.dumps(x.tolist()) 
Out[10]: '[[0.0, 0.111, 0.222, 0.333, 0.444], [0.556, 0.667, 0.778, 0.889, 1.0]]' 

你想从sympy转换什么样的输出?如果公式被转换成字符串,json.dumps应该没有问题。

1

我想,当你需要的是转换您的列表,以JSON格式,因为它是那么简单,你可以使用内置的json包了Python和dumps功能 :

>>> puntosX 
[-10.0, -7.778, -5.556, -3.333, -1.111, 1.111, 3.333, 5.556, 7.778, 10.0] 
>>> import json 
>>> json.dumps(puntosX) 
'[-10.0, -7.778, -5.556, -3.333, -1.111, 1.111, 3.333, 5.556, 7.778, 10.0]' 

您可以在其包装“puntos”对象是这样的:

>>> json.dumps({'puntos': puntosX}) 
'{"puntos": [-10.0, -7.778, -5.556, -3.333, -1.111, 1.111, 3.333, 5.556, 7.778, 10.0]}' 

而当你想puntos是字符串值的列表中,我会建议做这样的:

>>> json.dumps({'puntos': [str(p) for p in puntosX]}) 
'{"puntos": ["-10.0", "-7.778", "-5.556", "-3.333", "-1.111", "1.111", "3.333", "5.556", "7.778", "10.0"]}' 

我希望这是你想要做的。