Ruby on Rails Sunday, February 3, 2019



On Wednesday, January 30, 2019 at 5:16:59 PM UTC-5, Colin Law wrote:
On Wed, 30 Jan 2019 at 22:12, Colin Law <cla...@gmail.com> wrote:
>
> On Wed, 30 Jan 2019 at 22:09, fugee ohu <fuge...@gmail.com> wrote:
> >
> >
> >
> > On Wednesday, January 30, 2019 at 5:02:17 PM UTC-5, Colin Law wrote:
> >>
> >> On Wed, 30 Jan 2019 at 21:56, fugee ohu <fuge...@gmail.com> wrote:
> >> > ...
> >> > Everything in the unparsed resonse body that I want is between [ and ] I have to gsub it out
> >>
> >>
> >> No you don't.  After you get parsed_obj["results] (which is an array,
> >> that's what the [] mean) then you can get the first product by
> >> parsed_obj["results"][0]["productId"]
> >> It is just an array.  You have met ruby arrays haven't you?
> >>
> >> I am rapidly losing the will to live.
> >>
> >> Colin
> >
> >
> > The response body isn't JSON.parse parsable as is it has to be gsub'd and chomped first before I can run JSON.parse My original gsub wasn't right it wasn't removing the end that follows ]
> > JSON::ParserError: 784: unexpected token at 'myscript.js({"success":true,"code
>
> You previously posted that you had got parsed_obj where
> parsed_obj["results]  was an array.  Go back to that.

To quote your previous message

>puts parsed_obj["results"]  shows the entire results but `puts parsed_obj["results"]["productId"] gets me error no implicit
> conversion of String into Integer

The error is because it is an array, which is perfectly obvious if you
look at the unparsed string. So if you use
parsed_obj["results"][0]
you will get the first element

Colin

There are scripts in the browser page source that pass a lot of useful values like this
<script type="text/javascript">
if(!window.runParams) {
window.runParams = {};
}
window.runParams.minPrice="44.98";
window.runParams.maxPrice="44.98";
               ...
And more within definitions in the same script like this
var skuProducts=[{"skuAttr":"14:1052","skuPropIds":"1052","skuVal":{"actSkuCalPrice":"20.24","actSkuMultiCurrencyCalPrice":"20.24","actSkuMultiCurrencyDisplayPrice":"20.24","availQuantity":29,"inventory":30,"isActivity":true,"skuCalPrice":"44.98","skuMultiCurrencyCalPrice":"44.98","skuMultiCurrencyDisplayPrice":"44.98"}},{"skuAttr":"14:173","skuPropIds":"173","skuVal":{"actSkuCalPrice":"20.24","actSkuMultiCurrencyCalPrice":"20.24","actSkuMultiCurrencyDisplayPrice":"20.24","availQuantity":26,"inventory":30,"isActivity":true,"skuCalPrice":"44.98","skuMultiCurrencyCalPrice":"44.98","skuMultiCurrencyDisplayPrice":"44.98"}}];
        var GaData = {
        pageType: "product",
        productIds: "en32837801078",
        totalValue: "US $20.24"
    };

Since it's in <script> containers in page source can I parse it?

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/34c54fd0-575a-412f-bf21-d874d30853c2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment