表示するデータの項目として受賞者の生誕地、または団体の所在地を追加した。
受賞が個人の場合は、Birthplaceのデータを抽出すればよい。しかし、団体の場合は、2つのキーをチェックする必要がある。(当方が誤解しているのかもしれないが。。。)
2024年平和賞を受賞した日本被団協の場合は、以下のJSONデータの通り、キーを辿っていくとfounded => place => locationString => en ではなく、nobelPrizes => residences (index 1) => locationString => en に所在地のデータがある。設立場所(founded)は不明で、現在の所在地のみがわかっているからこのようなデータの内容となっているのだろうか?
一方、2022年に平和賞を受賞したCenter for Civil Liberties の場合は、founded => place => locationString => en にデータがあり、residences というキー自体がない。
上が前回までのListView、下が今回、生誕地と所在地を追加したListView
アプリ実行のビデオ:
スクリーン・デザイン:
前回より変更なし。
ブロック・コード:
生誕地または所在地のデータを処理している部分のみ。
関数makeListData:ListViewに表示する各項目のデータを取得したデータより抽出。
団体のlocationString(所在地)については、関数selectOrgPlace(赤黄点線部分)により別途抽出。
関数selectOrgPlace:
画像が不鮮明でわかりにくいが、
デコードされたJSONデータを laureates => founded => place => locationString => en のように辿って、もし en キーの値が空白であれば、同じJSONデータを laureates => nobelPrizes => residences => locationString => en のように辿って所在地データを抽出する。
関数makeDataForListView:
上記赤白点線部分を拡大すると以下の通り。birthPlace(個人の場合は生誕地、団体は所在地)のデータ表示の際に、受賞対象が団体の場合は、Location : 、個人の場合は、 Birthplace : を見出しとしてつける。
***********************************************************
前回までのブログ:
MIT App Inventor 2で遊ぶ (Nobel Prize Laureates 3)
MIT App Inventor 2で遊ぶ (Nobel Prize Laureates 2)
MIT App Inventor 2で遊ぶ (Nobel Prize Laureates 1)
(参考資料)
日本被団協のJSONデータ(デコード前):
{
"laureates":[
{
"id":"1043",
"orgName":{
"en":"Nihon Hidankyo",
"no":"Nihon Hidankyo",
"se":"Nihon Hidankyo"
},
"nativeName":"Nihon Hidankyo",
"fileName":"nihon-hidankyo",
"founded":{
"date":"1956-08-10",
"place":{
"locationString":{
"en":"",
"no":"",
"se":""
}
}
},
"wikipedia":{
"slug":"Japan_Confederation_of_A-_and_H-Bomb_Sufferers_Organizations",
"english":"https://en.wikipedia.org/wiki/Japan_Confederation_of_A-_and_H-Bomb_Sufferers_Organizations"
},
"wikidata":{
"id":"Q1989908",
"url":"https://www.wikidata.org/wiki/Q1989908"
},
"sameAs":[
"https://www.wikidata.org/wiki/Q1989908",
"https://en.wikipedia.org/wiki/Japan_Confederation_of_A-_and_H-Bomb_Sufferers_Organizations"
],
"links":[
{
"rel":"laureate",
"href":"https://api.nobelprize.org/2/laureate/1043",
"action":"GET",
"types":"application/json"
},
{
"rel":"external",
"href":"https://www.nobelprize.org/laureate/1043",
"title":" - Facts",
"action":"GET",
"types":"text/html",
"class":[
"laureate facts"
]
}
],
"nobelPrizes":[
{
"awardYear":"2024",
"category":{
"en":"Peace",
"no":"Fred",
"se":"Fred"
},
"categoryFullName":{
"en":"The Nobel Peace Prize",
"no":"Nobels fredspris",
"se":"Nobels fredspris"
},
"sortOrder":"1",
"portion":"1",
"dateAwarded":"2024-10-11",
"prizeStatus":"received",
"motivation":{
"en":"for its efforts to achieve a world free of nuclear weapons and for demonstrating through witness testimony that nuclear weapons must never be used again",
"no":"for sin innsats for en atomvåpenfri verden og for å vitne om hvorfor atomvåpen aldri må brukes igjen"
},
"prizeAmount":11000000,
"prizeAmountAdjusted":11000000,
"residences":[
{
"city":{
"en":"Tokyo",
"no":"Tokyo",
"se":"Tokyo"
},
"country":{
"en":"Japan",
"no":"Japan",
"se":"Japan"
},
"cityNow":{
"en":"Tokyo",
"no":"Tokyo",
"se":"Tokyo"
},
"countryNow":{
"en":"Japan",
"no":"Japan",
"se":"Japan"
},
"continent":{
"en":"Asia"
},
"locationString":{
"en":"Tokyo, Japan",
"no":"Tokyo, Japan",
"se":"Tokyo, Japan"
}
}
],
*********************** 以下省略 ***********************
Center for Civil Liberties のJSONデータ(デコード前):
{
"laureates":[
{
"id":"1020",
"orgName":{
"en":"Center for Civil Liberties",
"no":"Senteret for sivile rettigheter",
"se":"Center for Civil Liberties"
},
"nativeName":"Center for Civil Liberties",
"fileName":"center-for-civil-liberties",
"founded":{
"date":"2007-00-00",
"place":{
"city":{
"en":"Kyiv",
"no":"Kyiv",
"se":"Kiev"
},
"country":{
"en":"Ukraine",
"no":"Ukraina",
"se":"Ukraina",
"sameAs":"https://www.wikidata.org/wiki/Q212"
},
"cityNow":{
"en":"Kyiv",
"no":"Kyiv",
"se":"Kiev",
"sameAs":[
"https://www.wikidata.org/wiki/Q1899",
"https://www.wikipedia.org/wiki/Kyiv"
]
},
"countryNow":{
"en":"Ukraine",
"no":"Ukraina",
"se":"Ukraina",
"sameAs":[
"https://www.wikidata.org/wiki/Q212"
]
},
"continent":{
"en":"Europe",
"no":"Europa",
"se":"Europa"
},
"locationString":{
"en":"Kyiv, Ukraine",
"no":"Kyiv, Ukraina",
"se":"Kiev, Ukraina"
}
}
},
"wikipedia":{
"slug":"The_Center_for_Civil_Liberties",
"english":"https://en.wikipedia.org/wiki/The_Center_for_Civil_Liberties"
},
"wikidata":{
"id":"Q114452906",
"url":"https://www.wikidata.org/wiki/Q114452906"
},
"sameAs":[
"https://www.wikidata.org/wiki/Q114452906",
"https://en.wikipedia.org/wiki/The_Center_for_Civil_Liberties"
],
"links":[
{
"rel":"laureate",
"href":"https://api.nobelprize.org/2/laureate/1020",
"action":"GET",
"types":"application/json"
},
{
"rel":"external",
"href":"https://www.nobelprize.org/laureate/1020",
"title":" - Facts",
"action":"GET",
"types":"text/html",
"class":[
"laureate facts"
]
}
],
"nobelPrizes":[
{
"awardYear":"2022",
"category":{
"en":"Peace",
"no":"Fred",
"se":"Fred"
},
"categoryFullName":{
"en":"The Nobel Peace Prize",
"no":"Nobels fredspris",
"se":"Nobels fredspris"
},
"sortOrder":"3",
"portion":"1/3",
"dateAwarded":"2022-10-07",
"prizeStatus":"received",
"motivation":{
"en":"The Peace Prize laureates represent civil society in their home countries. They have for many years promoted the right to criticise power and protect the fundamental rights of citizens. They have made an outstanding effort to document war crimes, human right abuses and the abuse of power. Together they demonstrate the significance of civil society for peace and democracy.",
"no":"Prisvinnerne representerer sivilsamfunnet i sine hjemland. De har i mange år stått opp for retten til maktkritikk og grunnleggende rettigheter for borgerne. De har gjort en enestående innsats for å dokumentere krigsforbrytelser, brudd på menneskerettigheter og maktmisbruk. Til sammen viser de sivilsamfunnets betydning for fred og demokrati."
},
"prizeAmount":10000000,
"prizeAmountAdjusted":10000000,
************************ 次のキーは"residences" ではなく "links" ************************
"links":[
{
*********************** 以下省略 ***********************
※コメント投稿者のブログIDはブログ作成者のみに通知されます