dat ik ophaal in mijn app, Nu wil ik dus de 5 beste wapens hebben,
Hiervan heb ik al een groot deel geprogrammeerd, maar heb wat nodig voor de rest.
Let er wel op dat dit een Windows Phone app is.
[B]MainPage.xaml.cs[/B]
[I]function for in the main/content file.[/I]
[CODE=csharp]
private List<data.Weapon> getBestWeapons(StreamReader reader)
{
List<data.Weapon> weapons = new List<data.Weapon>();
var json = reader.ReadToEnd();
var jObject = JObject.Parse(json);
foreach (var n in jObject["stats"]["weapons"])
{
weapons.Add(new data.Weapon());
}
data.Weapons sorted = new data.Weapons();
return sorted.getSortedWeaponList(weapons);
}
[/CODE]
[B]Weapon class[/B]
[I]weapon struct, unlocks struct, sortedlist function[/I]
[CODE=csharp]
public struct Weapon
{
public string name { get; set; }
public double time { get; set; }
public Key kills { get; set; }
public int headshots { get; set; }
public int hits { get; set; }
public int shots { get; set; }
public int servicestars { get; set; }
public string desc { get; set; }
public string license { get; set; }
public string category { get; set; }
public string kit { get; set; }
public string range { get; set; }
public int fireModeAuto { get; set; }
public int rateOfFire { get; set; }
public int fireModeBurst { get; set; }
public int fireModeSingle { get; set; }
public string img { get; set; }
public List<WeaponUnlocks> unlocks { get; set; }
}
public struct WeaponUnlocks
{
public int id { get; set; }
public string name { get; set; }
public int curr { get; set; }
public int needed { get; set; }
public string nname { get; set; }
public string img { get; set; }
}
public class Weapons
{
public List<Weapon> getSortedWeaponList(List<Weapon> list)
{
if (typeof(List<Weapon>) == list.GetType())
{
return list;
}
foreach (Weapon wep in list)
{
list.OrderBy(x => x.kills);
}
-----------------
zinloze code even weggehaald.
---
Ik heb nu dat hij de weapons uitleest, maar nu in 1x geeft hij maar 4 items, inplaats van 128 aan.
En het wapen heeft in 1x 31 unlocks, wat dus ook niet klopt..
Ik vraag me dus echt af wat ik hier fout doe..
http://pastebin.com/J82qurPE
---
Zonder het toevoegen van de unlocks is het trouwens wel normaal.
----------------------
Ik zie net dat de 'actual' capacity maar 65 is, terwijl hij 128 items aangeeft..
----------------------
nieuwe source: http://pastebin.com/a7KMSA6k
Hij zet de waardes nu wel goed neer, maar hij maakt nog telkens 128 items aan, inplaats van 65, en 32 unlock items, inplaats van 18..
Misschien begrijp ik je verkeerd, maar de link naar showplayer.js is (heel verrassend) een javascript. Als ik jou laatste reactie goed interpreteer (waar dus gevraagd wordt naar een JSON), vertel je ons dat dit (1) jou JSON is. In deze (2) link beweer je een JSON te hebben, wat al eerder is tegengesproken door Ontani.
(1) Op mijn bovenstaande gegeven borduur ik even voort.
Javascript - Een "programmeertaal". Json - Een methode om gevevens uit te wisselen.
(2) Zoals al eerder verteld, dit is gewoon een print_r, en geen JSON.
Een Json ziet er bijvoorbeeld zo uit: voorbeeld.
Mogelijke oplossing
Gezien je met php werkt, en al een array hebt ben je al super ver, het enige wat jij moet doen om een json op die pagina tevoorschijn te toveren is het volgende:
@ArieMedia & slightly offtopic:
nu wil ik niet gaan moeilijk doen, maar hij heeft al eens een vraag gesteld hierrond, en ik heb hem dan JSON.NET aangereikt, en dat parst die variabele gewoon hoor (file (1) zoals jij aangeeft).. (zie die jObject zooi in zijn code).
Jij zegt dat (1) een "JavaScript" is. Waarom? Omdat er .js achter staat? Het gaat over de inhoud, die is structureel perfect te verwerken.
Ik heb nu geen tijd om de eigenlijke vraag te gaan bestuderen, maar ik wilde toch even melden aan topicstarter dat zijn opzet wel goed is
edit: toch even snel gekeken Kan je daar niet gewoon LINQ op loslaten (weet niet wat kan op WP)? weapons.OrderBy(w => w.whateverParameter).Take(5)?
Als dit chinees klinkt, google ff LINQ en je zal zien dat dit echt superhandig is om eenvoudig juiste data te selecteren.
Normaal volstaat het "using System.Linq" toe te voegen bovenaan, en dan kan je dit zeker al gebruiken op List-objecten, IQueryable-objecten,...
@Maarten
Bedankt voor je compliment met dat ik toch een eigen initiatief heb genomen.
Daarnaast wil ik wel even iets vragen over je LINQ,
Ik ben hier inderdaad niet bekent mee, en heb er enkel van gehoort.
Maar omdat het aantal wapens tot zover 65 is, en mogelijk zal worden verhoogt met komende uitbreidingen, werkt deze code dan nog wel perfect?
zoals in : weapons.OrderBy(w => w.whateverParameter).All()?
----------------
Daarnaast geloof ik niet echt dat ik duidelijk heb gemaakt wat het probleem precies is.
Alles werkt gewoon, hij haalt keurig de wapens en unlocks op.
Echter geeft hij aan dat er in de getWeapons 128 items zitten, met ieders 32 unlocks.
Inplaats van 65 items, met ieders 18 unlocks.
Mijn vraag is dus ook, klopt mijn code eigenlijk wel?
Als de aantal zouden verhogen blijft die code werken, ja, geen probleem.
Wat betreft de foute aantallen: hoe weet je dat het er 65 zijn? Vermoedelijk omdat jij ook over de brondata beschikt in het origineel - SQL ofzo - formaat... ik zou anders eens gaan kijken of het niet aan de JSON structuur ligt? Bijvoorbeeld door ergens een applicatie of iets te gaan zoeken die het parsed in een ander formaat (iets visueel) waardoor je kan kijken op hoeveel die applicatie uitkomt... dan weet je toch al of het aan de JSON of aan de applicatie ligt.
Nou, ik ben eigenlijk gewoon dom gaan kijken onder het debuggen.
Zo zag ik bij enkelen dat er een valid value inzat, en bij anderen een null expression.
Daarnaast stond bij Capacity 65 , wat hierbij vanaf 0 tot en met 64 is.
-------
Heb net als controle even in PHP gedaan, en hier kreeg ik 65 terug.
Mijn theorie klopt dus.
Dat bewijst niets! Een pre-tag met een waarde van 65 erin. Wordt er bij het tellen niet ergens teveel geteld. Laar ansders die code eens zien die de wapens gaat tellen..
Dat bewijst niets! Een pre-tag met een waarde van 65 erin. Wordt er bij het tellen niet ergens teveel geteld. Laar ansders die code eens zien die de wapens gaat tellen..Â