I have a json file like this :
[{"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]."]
}]
When i use json_decode the var_dump() return :
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)
My goal is to get what's in the 'Molecule' => array
Contrôler :
/**
* @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());
}
It works with all $items exept for Molecule, i tried :
$jsonTextMining->setMolecule($item['Molecule']['Main name'][0]);
and others ways do you think there is a way to get what's in this json array or should i reformat the json ?
Moleculeitself is an array so you need to further loop through this or do$item['Molecule'][0]['Synonyms']?json_decode($json, true)[0]['Molecule'][0]['Main name']$jsonTextMining->setMoleculeis expecting!!! Does it want (x) main names? Or an array of Molecule names ?? OR WHAT