J'ai un hachage à revenir d'une source de données XML qui ressemble à ceci:Choisir un tableau de hachages d'un hachage
{...,
'records' :{
'record' :[
{'availability' :{'$t' :'available'}, ...},
{'availability' :{'$t' :'available'}, ...}
]
}
};
Je voudrais obtenir tous les record
hash dans un tableau afin que je puisse filter()
et faire d'autres opérations. Cependant, quand j'ai cette déclaration dans mon bloc pre
,
raw_records = raw.pick("$..record");
le tableau qui est renvoyée est un tableau de deux chaînes vides:
var raw_records = ['', ''];
La chose étrange est que je peux choisir juste availability
avec des résultats attendus:
availability = raw.pick("$..availability.$t");
production
var availability = ['available', 'available'];
Quel est le problème avec mon premier pick()
?
EDIT: Voici une version plus complète qui devrait aider à reproduire le problème. Il est un peu différent, puisque je suis en utilisant la version JSON du service web maintenant:
global {
datasource hbll <- "https://svc.lib.byu.edu/services/catalog/v1/search/?field=isbn&format=json&terms=";
}
rule new_rule {
select when pageview "amazon.com/.*/?dp/(.*)/" setting (isbn)
pre {
//This is the array with two empty strings...
raw = datasource:hbll(isbn);
myfilter = function(x) { x.pick("availability") eq "available"; };
records = raw.filter(myfilter);
len = records.length();
availability = records.pick("$..availability");
middleman = len > 1 => availability[0] | availability;
available = middleman eq "available" => true | false;
url_list = records.pick("$..url");
url = len > 1 => url_list[0] | url_list;
msg = <<
<p>This book is available for checkout at the BYU Library.</p>
<a href="#{url}">More information</a>
>>;
}
notify("BYU Harold B. Lee Library", msg) with sticky=true;
}
ne peut pas se reproduire. Besoin de plus d'informations :) – Alex
Maintenant, nous travaillons à reproduire et à creuser. Merci pour l'exemple développé. – Alex
Pour l'exemple ci-dessus, j'ai testé sur http://www.amazon.com/Sams-Teach-Yourself-Java-Hours/dp/0672330768/ quand j'ai eu ce problème. –