JSON数组我有一个JSON文件是这样的:得到与json_decode
[{"id":"PMC102324",
"Original_paper":"https://www.ncbi.nlm.nih.gov/pmc/articles/PMC102324/pdf",
"Annotated_file":"http://nactem10.mib.man.ac.uk/brat-v1.3/#/NCSTOX/PMC102324",
"Title":"Glucosinolate breakdown products as insect fumigants and their effect on carbon dioxide emission of insects",
"Molecule":[{"Main name":"glucosinolate", "Synonyms":[]},{"Mainame":"isothiocyanate", "Synonyms":[]},{"Main name":"hexane", "Synonyms": []},{"Main name":"sinigrin", "Synonyms":[]},{"Main name":"allyl glucosinolate", "Synonyms":[]},{"Main name":"rotenone", "Synonyms":[]},{"Main name":"sucrose", "Synonyms":[]},{"Main name":"thiocyanate", "Synonyms":[]},{"Main name":"allyl isothiocyanate", "Synonyms":[]}],
"ToxKeywords":"safety, cytotoxic, ",
"Important_sentences":["The mode of action of many isothiocyanate compounds has also been attributed to their capability for alkylating the nucleophilic groups of biopolymers such as DNA, thus having cytotoxic properties which can affect the formation of the spiracular epidermis and crochet on the prolegs of tobacco hornworm (Manduca sexta L.) caterpillars [28-30]."]
}]
当我使用json_decode
的var_dump()
回报:
array (size=1)
0 =>
array (size=7)
'id' => string 'PMC102324' (length=9)
'Original_paper' => string 'https://www.ncbi.nlm.nih.gov/pmc/articles/PMC102324/pdf' (length=55)
'Annotated_file' => string 'http://nactem10.mib.man.ac.uk/brat-v1.3/#/NCSTOX/PMC102324' (length=58)
'Title' => string 'Glucosinolate breakdown products as insect fumigants and their effect on carbon dioxide emission of insects' (length=107)
'Molecule' =>
array (size=9)
0 =>
array (size=2)
...
1 =>
array (size=2)
...
2 =>
array (size=2)
...
3 =>
array (size=2)
...
4 =>
array (size=2)
...
5 =>
array (size=2)
...
6 =>
array (size=2)
...
7 =>
array (size=2)
...
8 =>
array (size=2)
...
'ToxKeywords' => string 'safety, cytotoxic, ' (length=19)
'Important_sentences' =>
array (size=1)
0 => string 'The mode of action of many isothiocyanate compounds has also been attributed to their capability for alkylating the nucleophilic groups of biopolymers such as DNA, thus having cytotoxic properties which can affect the formation of the spiracular epidermis and crochet on the prolegs of tobacco hornworm (Manduca sexta L.) caterpillars [28-30].' (length=343)
我的目标是获得什么在 '分子'= >阵列
CONTROLER:
/**
* @Route("/parse_file", name="parseFile")
* @method("GET")
*/
public function parseFile()
{
$em = $this->getDoctrine()->getManager();
$em->getRepository('NcstoxBundle:JsonTextMining');
set_include_path('/home/landreau/workspace/NCSTOX/web/assets/json/sample-json');
$json = file_get_contents('PMC102324.json', FILE_USE_INCLUDE_PATH);
$tab = json_decode($json, true);
var_dump($json);
var_dump($tab);
foreach ($tab as $item) {
$jsonTextMining = new JsonTextMining();
$jsonTextMining->setSolrId($item['id']);
$jsonTextMining->setOriginalPaper($item['Original_paper']);
$jsonTextMining->setAnnotatedFile($item['Annotated_file'][0]);
$jsonTextMining->setTitle($item['Title'][0]);
$jsonTextMining->setMolecule($item['Molecule']['Main name']);
$jsonTextMining->setMolecule($item['Molecule']['Synonyms']);
$jsonTextMining->setKeyword($item['ToxKeywords'][0]);
$jsonTextMining->setImportantSentence($item['Important_sentences'][0]);
$em = $this->getDoctrine()->getManager();
$em->persist($jsonTextMining);
}
$em->flush();
return new Response('Saved new document with id ' . $jsonTextMining->getSolrId());
}
它适用于所有项目$为exept分子,我想:
$jsonTextMining->setMolecule($item['Molecule']['Main name'][0]);
和其他方式,你认为有办法让这个JSON数组什么或者我应该重新格式化JSON?
'分子'本身就是一个数组,所以你需要进一步循环这个或做'$ item ['Molecule'] [0] ['Synonyms']'? –
我认为我们会接近,但现在我得到了这个错误:类型错误:参数1传递给NcstoxBundle \ Entity \ JsonTextMining :: setMolecule()必须是Doctrine \ Common \ Collections \ ArrayCollection的一个实例, /jsp/json/demo/workspace/NCSTOX/src/NcstoxBundle/Controller/DefaultController.php on line 128 – Gy0m
'json_decode($ json,true)[0] ['Molecule'] [0] ['Main name']' –