PHP-将fgetcsv响应转换为特定的json
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP-将fgetcsv响应转换为特定的json,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2440字,纯文字阅读大概需要4分钟。
内容图文
![PHP-将fgetcsv响应转换为特定的json](/upload/InfoBanner/zyjiaocheng/695/de20158bd0db4c539b504f25ef3acf51.jpg)
我有一个带标题的.CSV文件:
Description, BusinessSurname, IsCustomer, IsSupplier, AddressType, Business
Address, IsInternational.
第一排:
Contact1, Contact1, True, True, Business, 123 Fake St, False
剩余的行并不重要,它更像是示例.我那里有几行数据.
我需要将其转换为json格式:
{
Description:'Desc_47AE3208-87F5-4BBA-BE40-AA4130AB4768',
SurnameBusinessName:'Name_Business',
IsCustomer:true,
IsSupplier:true,
Addresses:
[
{AddressType:'Business',Line1:'addr1_bus',IsInternational:false},
{AddressType:'Postal',Line1:'addr1_pos',IsInternational:true}
]
}
我尝试了几种不同的方法,但是没有一种方法专门给我提供这样的带有嵌套地址的json.我可以省略第二个地址(邮政地址).
如果我使用此代码:
$filename = 'contacts1.csv';
$handle = fopen($filename, 'r');
$count = 0;
while (($data = fgetcsv($handle)) !== FALSE) {
$count++;
if ($count == 1){
continue;
}
$json = json_encode($data, true);
echo $json;
};
我得到这个例子:
["Contact1","Contact1","TRUE","TRUE","Business","123 High Street Sydney NSW 2000","FALSE"]
["Contact2","Contact2","TRUE","TRUE","Business","124 High Street Sydney NSW 2000","FALSE"]
["Contact3","Contact3","TRUE","TRUE","Business","125 High Street Sydney NSW 2000","FALSE"]
有没有办法获取我需要的json,如果我不能自动获取所需的json,有没有办法我可以提取每一行的值,并分配给变量,然后手动为每一个创建所需的json行,使用for循环,while循环等?例如:
{
Description: $description,
SurnameBusinessName: $BusinessSurname,
etc...
}
解决方法:
我找到了答案,但是我放弃了这个API端点,转而使用一个没有嵌套的简单端点.由于json格式的严格性,此API会接受,我基本上将csv中的每个值分配给了一个变量,然后手动创建了所需的json.尽管下面的代码用于Accounts端点,但是我可以对任何端点使用完全相同的方法,因为我有点手工创建json.我认为这是它唯一可行的方法,因为某些字段是诸如AccountName之类的字符串,一些是诸如AcountType之类的整数.
$file = 'acc.csv';
$mode = 'r';
$handle = fopen($file, $mode);
while(($csv = fgetcsv($handle)) !==FALSE){
foreach($csv as $row => $value){
$data = $row.$value;
switch ($row){
case '0':
$accounttype = $value;
break;
case '1':
$accountname = $value;
break;
case '2':
$hint = $value;
break;
case '3':
$status = $value;
break;
case '4':
$sortorder = $value;
break;
case '5':
$accountcode = $value;
break;
case '6':
$parentaccountcatid = $value;
$json = "
{
AccountType:" . $accounttype . ",
AccountName:'" . $accountname . "',
Hint:'" . $hint . "',
Status:" . $status . ",
SortOrder:" . $sortorder . ",
AccountCode:'" . $accountcode . "',
ParentAccountingCategoryID:'" . $parentaccountcatid . "'
}";
//echo $json;
内容总结
以上是互联网集市为您收集整理的PHP-将fgetcsv响应转换为特定的json全部内容,希望文章能够帮你解决PHP-将fgetcsv响应转换为特定的json所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。