Filter url JSON results using App Inventor 2

2020-04-21 02:20发布

问题:

I'm trying to filter a JSON url results using App Inventor 2, following sample codes from here1 and here2, but I still cannot get it done right. I only get one result at a time.

The JSON results are data in the form shown in the following figure:

{
"field1":"alphaNumeric1",
"field2":"aNumber1",
"field3":"DD/MM/YY",
"field4":"HH/MM/SS",
"field5":"https://",
"field6":"aText",
"field7":"aNumber2",
"field8":"alphaNumeric2",
"field9":"aNumber3",
"field10":"alphaNumeric3"
}

The JSON url is constantly updated, so are the results, but this is not a problem for now. I can get it read by a timer.

The problem is that from the above results, I need to parse "field2", "field5", "field6", in according labels in the app. So e.g., when I input a "aNumber1" to get searched in the JSON data, and have the result in a label.

Is it possible this JSON data search be done with App Inventor 2?

Anyone kind enough please answer with a sample blocks if possible. Thank you all in advance!

[EDIT 1]

No matter what I've tried, JSON could not get filtered right. Therefore I'm to filter the url results in XML.

The XML results are data in the form shown in the following figure:

<results>
<decision>
<alphaNumeric1>ABC1D</alphaNumeric1>
<aNumber1>ABCD</aNumber1>
<aDate>123</aDate>
<doc>HTTP</doc>
<aNumber2>1234</aNumber2>
<alphaNumeric2>TYPE</talphaNumeric2>
<aNumber3>12345</aNumber3>
<aNumber4>1234567</aNumber4>
<aText>SomeText</aText>
<aHour>00:00:00</aHour>
</decision>
.
.
.
<decision>
.
.
.
</decision>
.
.
.
</results>

I have tried to follow the example at here2, but I don't get it right. According to the XML output, what should I put in starTag and endTag, to get a parsing result if I'm searching for e.g. aNumber4 value (= 1234567) ?

Can someone respond with an answer?

[EDIT 2]

Well I'm trying to make some progress here following the example at here3.

The XML is being parsed with a runtime error "this is not a well formatted list of pairs".

Following is the blocks code I'm using:

Why is that so, since I'm following the example to the letter? Any clues anyone to solve this out?

回答1:

well, your blocks look a little bit strange...

you have a complex list of lists, just use Do it to find out, how it looks like after each step of using lookup in pairs...

It helps to follow the already provided links:

  • how to work with lists
  • how to work with list of lists (pdf) by appinventor.org
  • see also An example of a complex List of Lists

In the example blocks below I looked for the first <decision> and displayed the value of tag aDate in Label1 like this

you might want to loop through the different <decision>s using a for each in list loop....