将数据从json转换为给定的格式

时间:2017-08-16 21:37:56

标签: javascript php json api

我正在使用API​​,我必须从json文件提供输入。

我的json文件看起来像这样

{
  "cases":[
    { 
        "case_no":1,
        "case_input":"Test 1",
        "case_output":"Test 1"
    },
    { 
        "case_no":2,
        "case_input":"Test 2",
        "case_output":"Test 2"
    } 
        ]       
}

我想从这个json中提取case_input,需要像这样转换它

$testcases = "[\"Test 1\", \"Test 2\"]";

我怎么能用javascript或php做到这一点?

目前我所做的是通过Ajax导入JSON然后

var testcases = [];
                  for(var j in data.cases ){
                    testcases[j]= data.cases[j].case_input;
                  }
                  testcase = JSON.stringify(testcases);

2 个答案:

答案 0 :(得分:1)

在php中,您可以使用array_column()来提取这些值。您只需要解码json,然后再对结果进行编码。

$json='{
  "cases":[
    { 
        "case_no":1,
        "case_input":"Test 1",
        "case_output":"Test 1"
    },
    { 
        "case_no":2,
        "case_input":"Test 2",
        "case_output":"Test 2"
    } 
        ]       
}';
$array=json_decode($json,true);
$case_inputs=array_column($array['cases'],'case_input');
echo json_encode($case_inputs);
// Output: ["Test 1","Test 2"]

或者如果您需要带有转义双引号的文字字符串:

$array=json_decode($json,true);
$case_inputs=array_column($array['cases'],'case_input');
echo '[\"',implode('\", \"',$case_inputs),'\"]';
// output: [\"Test 1\", \"Test 2\"]

答案 1 :(得分:0)

您可以使用Array.map:

var v = {
  "cases":[
    { 
        "case_no":1,
        "case_input":"Test 1",
        "case_output":"Test 1"
    },
    { 
        "case_no":2,
        "case_input":"Test 2",
        "case_output":"Test 2"
    } 
        ]       
}
var testcases = v.cases.map((i) => i.case_input)