对措辞不佳的标题表示歉意。
基本上,我有一个csv文件,其中的行如下所示:
<ReferenceField source="item_id" reference="list" linkType={false}>
<SubReference source="id_to_reference_from_list" reference="second_list">
<TextField source="name" />
</SubReference>
</ReferenceField>
第一个嵌套列表的键名是'board',第二个是'status'。我正在尝试对此进行格式化,以便使用嵌套的“名称”键代替“板”和“状态”。我希望它的格式如下:
<TextBox
Text="{Binding MyBinding, Mode=OneWay}">
<TextBox.Style>
<Style TargetType="StackPanel" BasedOn="{StaticResource TextBoxStyle1}">
<Setter Property="Visibility" Value="Visible"/>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=thisView, Path=DataContext.MyPropertyInViewModel}" Value="3">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
我对此完全迷失了。任何帮助将不胜感激。
以下是我的代码,用于从get请求中检索.json数据并将其转换为.csv:
1234567, Install X Software on Y Machine, ServiceTicket,"{'id': 47, 'name': 'SERVICE BOARD', '_info': {'board_href': 'https://MY-URl'}}","{'id': 897, 'name': 'Completed', '_info': {'status_href': 'https://MY-URl'}}...
答案 0 :(得分:1)
这不是很好的解决方案,但应该可以。另外,您可以查看itemgeter
with open('data.csv', 'w') as f:
writer = csv.DictWriter(f, fieldnames=('foo1', 'foo2'))
writer.writeheader()
for i in data:
record = []
for item in i.values():
if isinstance(item, dict):
record.append(item['name'])
else:
record.append(item)
writer.writerow(record)
答案 1 :(得分:0)
在将json文件转换为csv之前,将其变平,然后删除不需要的密钥,从而获得了所需的格式。这不是一个理想的答案,但是可以。