2011-12-14 50 views
0

我有一個C#中的簡單元素的集合。元素是這樣的:序列化集合解析python

public class Element 
{ 
    public string AName { get; private set; } 

    public string PName { get; private set; } 

    public string Value { get; set; } 
} 

我需要將此集合作爲字符串傳遞給Python腳本。在python中,我需要調用像Func(AName,PName,Value)這樣的函數。我已經在C#和Python中寫的代碼序列化集合JSON做到了這一點:

elements = json.loads(JSON) 
for element in elements: 
    Func(routeLayer, element['AName'], element['PName'], element['Value']) 

但現在事實證明,我不能使用Python的JSON模塊。所以我需要一種新的方式將這個集合傳遞給腳本並且不使用任何額外的模塊。我是Python真正的noob,所以我可以想象的解決方案很難看。你能給我一個建議嗎?

回答

1

如果有一些字符,你可以保證不會在字符串ANamePNameValue那麼你可以使用該字符作爲分隔符。在C#中,您可以通過簡單地將三個字符串與分隔符連接起來來「序列化」信息,例如, "foo,bar,baz"

然後在Python中,信息可以與

aName,pName,value = element.split(',') 

PS反序列化。出於好奇,爲什麼你不能在標準庫中導入模塊?

+0

是的,我目前的想法是使用兩個分隔符:一個在我的課堂內,另一個分隔集合元素。 這個腳本是模型的一部分,在引擎中執行這個模塊是一個bug,它不允許在Python腳本中使用模塊... – Seekeer 2011-12-14 14:29:38

0

Python中最常用的標準是XML。你有沒有考慮過這個選擇?

更新: 您可以使用C#中的XmlSerializer作爲XML序列化。而here是什麼東西,我已經找到了Python的

+0

謝謝,但快看蟒蛇指南表明,對於XML的一些模塊必須被使用: `進口xml.sax` 不認爲,它會成功。 – Seekeer 2011-12-14 13:04:18