Convertir un fichier en JSON
Salut,
Dans la catégorie "problèmes plus que divers pour une même personne" je suis pas mauvais, aussi après les tableaux, les redo, je m'attaque aujourd'hui au format JSON.
Je voulais savoir si quelqu'un savait convertir n'importe quel fichier (texte pas binaire) en JSON via PERL ?
Voilà du format JSON pour ceux qui connaissent pas le nom :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
{
"menu":
{
"id": "file",
"value": "File",
"popup":
{
"menuitem":
[
{ "value": "New", "onclick": "CreateNewDoc()" },
{ "value": "Open", "onclick": "OpenDoc()" },
{ "value": "Close", "onclick": "CloseDoc()" }
]
}
}
} |
Convertion en JSON problème
Salut,
Aujourd'hui je souhaite convertir un objet PERL en JSON. Pour cela j'ai installé le module JSON.
http://search.cpan.org/~makamaka/JSON-2.53/lib/JSON.pm
Voici un exemple de format JSON
Je me doute bien que ce module ne doit jamais être utilisé par la plupart des gens mais si quelqu'un sait s'en servir par pitié ! :help:
Mon problème est que cela retourne toujours null quand je souhaite printer au la variable en JSON.
Voilà mon code (le problème peut venir de la partie objet même si j'en doute fortement, si quelqu'un voit une erreur qu'il se manifeste ^^)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| #!/usr/bin/perl
package module_JSON;
use strict;
use warnings;
use JSON;
use Bio::SeqIO;
sub constructeur {
my ($classe, $id, $desc, $seq) = @_;
my $this = {
'id' => $id,
'desc' => $desc,
'seq' => $seq
};
bless($this, $classe);
#print $this->{id}."\n".$this->{desc}."\n".$this->{seq}."\n";
return $this;
}
my $in = Bio::SeqIO->new(-format => 'fasta', -file => $ARGV[0]) or die "\n"."Erreur, $!"."\n";
while(my $seq = $in->next_seq()){
my $objet = module_JSON -> constructeur($seq->primary_id(), $seq->desc(), $seq->seq());
print $objet->{id}."\n".$objet->{desc}."\n".$objet->{seq}."\n";
my $json = JSON->new->allow_nonref;
$json->allow_blessed(1);
$json->convert_blessed(1);
my $json_text = $json->pretty->encode($objet);
print $json_text."\n\n";
}
1; |
Voici le résultat sur mon terminal :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| sp|A0A183|LCE6A_HUMAN
Late cornified envelope protein 6A OS=Homo sapiens GN=LCE6A PE=2 SV=1
MSQQKQQSWKPPNVPKCSPPQRSNPCLAPYSTPCGAPHSEGCHSSSQRPEVQKPRRARQKLRCLSRGTTYHCKEEECEGD
null
sp|A0A5B9|TRBC2_HUMAN
T-cell receptor beta-2 chain C region OS=Homo sapiens GN=TRBC2 PE=1 SV=1
DLKNVFPPEVAVFEPSEAEISHTQKATLVCLATGFYPDHVELSWWVNGKEVHSGVSTDPQPLKEQPALNDSRYCLSSRLRVSATFWQNPRNHFRCQVQFYGLSENDEWTQDRAKPVTQIVSAEAWGRADCGFTSESYQQGVLSATILYEILLGKATLYAVLVSALVLMAMVKRKDSRG
null
tr|A0AUK0|A0AUK0_HUMAN
TXLNA protein (Fragment) OS=Homo sapiens GN=TXLNA PE=2 SV=1
MKNQDKKNGAAKQSNPKSSPGQPEAGSFDSLDLEKVSLGRALAGRSELGISCLEQGTWRMFLRGMMCWS
null
tr|A0AUL9|A0AUL9_HUMAN
ATG2A protein (Fragment) OS=Homo sapiens GN=ATG2A PE=2 SV=1
MSRWLWPWSNCVKERVCRYLLHHYLGHFFQEHLSLDQLSLDLYKGSVALRDIHLEIWSVNEVLESMESPLELVEGFVGSIEVAVPWAALLTDHCTVRVSGLQLTLQPRRGPAPGAADSQSWASCMTTSLQLAQECLRDGLPEPSEPPQPLEGLEMFAQTIETVLRRIKVTFLDTVVRVEHSPGDGERGVAVEVRVQRLEYCDEAVRDPSQAPPVDVHQPPAFLHKLLQLAGVRLHYEELPAQEEPPEPPLQIGSCSGYMELMVKLKQNEAFPGPKLEVAGQLGSLHLLLTPRQLQQLQELLSAVSLTDHEGLADKLNKSRPLGAEDLWLIEQDLNQQLQAGAVAEPLSPDPLTNPLLNLDNTDLFFSMAGLTSSVASALSELSLSDVDLASSVRSDMASRRLSAQARPGLALQGMATVKDAFPACPLPICCERGASLPWGLSPGSALFLRGERTLPLPRPGPTLLPSPRTEAFGPSDPIPLSQVSFCVWGEEGMISVWFDVLFLSSVSAWVSVC
null
tr|A0AUP3|A0AUP3_HUMAN
LOC339290 protein (Fragment) OS=Homo sapiens GN=LOC339290 PE=2 SV=1
MSQFQGKGPRWTVLIMSKVGLRGGLSDQMAMKVLDPLRQALDSSMQSNNLCQHPQPLALHVSAAVASAGAQASSLLGPLPHLSSFAFQPAHSLLSLLGSHGAEVSKKMALLARERSPAHLVAFPGRLTATPPGLPTF
null |
Merci pour votre aide.
PS : Inutile de déplacer dans la partie bioinformatique c'est juste un exemple, les bioinformaticien n'ont pas de format JSON à traiter (ou pas souvent du tout)