D言語からObjective-CとCocoaAPIを使いたい
JSONからD言語string配列、NSArray NSString配列に
JSONのデータ形式から、D言語string配列とNSString配列のNSArrayに変換してみました。
サンプルコード
Powered by Prism
arrayjson/mlb.json
[
{"Team":"Arizona Diamondbacks", "Division":"West", "League":"National"},
{"Team":"Atlanta Braves", "Division":"East", "League":"National"},
{"Team":"Baltimore Orioles", "Division":"East", "League":"American"},
{"Team":"Boston Red Sox", "Division":"East", "League":"American"},
{"Team":"Chicago Cubs", "Division":"Central", "League":"National"},
{"Team":"Chicago White Sox", "Division":"Central", "League":"American"},
{"Team":"Cincinnati Reds", "Division":"Central", "League":"National"},
{"Team":"Cleveland Guardians", "Division":"Central", "League":"American"},
{"Team":"Colorado Rockies", "Division":"West", "League":"National"},
{"Team":"Detroit Tigers", "Division":"Central", "League":"American"},
{"Team":"Houston Astros", "Division":"West", "League":"American"},
{"Team":"Kansas City Royals", "Division":"Central", "League":"American"},
{"Team":"Los Angeles Angels", "Division":"West", "League":"American"},
{"Team":"Los Angeles Dodgers", "Division":"West", "League":"National"},
{"Team":"Miami Marlins", "Division":"East", "League":"National"},
{"Team":"Milwaukee Brewers", "Division":"Central", "League":"National"},
{"Team":"Minnesota Twins", "Division":"Central", "League":"American"},
{"Team":"New York Mets", "Division":"East", "League":"National"},
{"Team":"New York Yankees", "Division":"East", "League":"American"},
{"Team":"Oakland Athletics", "Division":"West", "League":"American"},
{"Team":"Philadelphia Phillies", "Division":"East", "League":"National"},
{"Team":"Pittsburgh Pirates", "Division":"Central", "League":"National"},
{"Team":"San Diego Padres", "Division":"West", "League":"National"},
{"Team":"San Francisco Giants", "Division":"West", "League":"National"},
{"Team":"Seattle Mariners", "Division":"West", "League":"American"},
{"Team":"St. Louis Cardinals", "Division":"Central", "League":"National"},
{"Team":"Tampa Bay Rays", "Division":"East", "League":"American"},
{"Team":"Texas Rangers", "Division":"West", "League":"American"},
{"Team":"Toronto Blue Jays", "Division":"East", "League":"American"},
{"Team":"WashingTon Nationals", "Division":"East", "League":"National"}
]
arrayjson/dub.json
{
"authors": ["hidhok"],
"description": "A D/Objective-C Cocoa application.",
"name": "arrayjson",
"dflags": ["-L-framework", "-LCocoa"],
"sourceFiles": ["../cocoa/strings"]
}
arrayjson/source/app.d
/**
* arrayjson/source/app.d Version 0.0.1
*/
module arrayjson.main;
import core.attribute : selector;
import std.stdio;
import std.json;
import std.file;
import cocoa.strings;
void main(string[] args) {
string mlbStr, tempStr;
try {
tempStr = readText("mlb.json");
} catch(Exception e) {
writeln(e.message);
return;
}
mlbStr = tempStr;
JSONValue mlbJson = mlbStr.parseJSON;
ulong mlbN = mlbJson.array.length;
string[] team, division, league;
team.length = division.length = league.length = mlbN;
foreach(i; 0 .. mlbN) {
team[i] = mlbJson[i]["Team"].get!string;
division[i] = mlbJson[i]["Division"].get!string;
league[i] = mlbJson[i]["League"].get!string;
}
NSArray Team = team.toNSArray;
NSArray Division = division.toNSArray;
NSArray League = league.toNSArray;
writefln("MLB 配列要素数 %2d個", mlbN);
writeln("NSArray --- Team --------- Division --- League");
foreach (i; 0 .. mlbN) {
writefln(" %2d %-22s %-8s %-8s", i + 1,
Team.atIndex(i).toDs,
Division.atIndex(i).toDs,
League.atIndex(i).toDs);
}
}
NSArray toNSArray(string[] string_array) {
NSMutableArray temp = NSMutableArray.array;
foreach (i; 0 .. string_array.length) {
temp.add(string_array[i].toNs);
}
return temp.copy;
}
Terminal
(base) hidhok arrayjson % dub
Starting Performing "debug" build using /Library/D/dmd/bin/dmd for x86_64.
Building arrayjson ~master: building configuration [application]
Linking arrayjson
Running arrayjson
MLB 配列要素数 30個
NSArray --- Team --------- Division --- League
1 Arizona Diamondbacks West National
2 Atlanta Braves East National
3 Baltimore Orioles East American
4 Boston Red Sox East American
5 Chicago Cubs Central National
6 Chicago White Sox Central American
7 Cincinnati Reds Central National
8 Cleveland Guardians Central American
9 Colorado Rockies West National
10 Detroit Tigers Central American
11 Houston Astros West American
12 Kansas City Royals Central American
13 Los Angeles Angels West American
14 Los Angeles Dodgers West National
15 Miami Marlins East National
16 Milwaukee Brewers Central National
17 Minnesota Twins Central American
18 New York Mets East National
19 New York Yankees East American
20 Oakland Athletics West American
21 Philadelphia Phillies East National
22 Pittsburgh Pirates Central National
23 San Diego Padres West National
24 San Francisco Giants West National
25 Seattle Mariners West American
26 St. Louis Cardinals Central National
27 Tampa Bay Rays East American
28 Texas Rangers West American
29 Toronto Blue Jays East American
30 WashingTon Nationals East National
(base) hidhok arrayjson %
cocoa/strings.d
- Log
- 2024-06-09 修正しました
- 2023-10-07 upload