login  Naam:   Wachtwoord: 
Registreer je!
 Forum
Zoeken  Regels  Help
Categorieën > Csharp.NET

JSON + Struct + List<> (Opgelost)

larssy1 – 10/11/2011 22:33 (Laatst gewijzigd op 10/11/2011 22:34)
Hoi mensen,

Iemand die mij hierbij toevallig kan helpen??

Er is JSON output:
http://www.unrealxs.com/beta/stats.php

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]
  1. private List<data.Weapon> getBestWeapons(StreamReader reader)
  2. {
  3. List<data.Weapon> weapons = new List<data.Weapon>();
  4.  
  5. var json = reader.ReadToEnd();
  6. var jObject = JObject.Parse(json);
  7.  
  8. foreach (var n in jObject["stats"]["weapons"])
  9. {
  10. weapons.Add(new data.Weapon());
  11. }
  12.  
  13. data.Weapons sorted = new data.Weapons();
  14. return sorted.getSortedWeaponList(weapons);
  15. }



[B]Weapon class[/B]
[I]weapon struct, unlocks struct, sortedlist function[/I]
  1. public struct Weapon
  2. {
  3. public string name { get; set; }
  4. public double time { get; set; }
  5. public Key kills { get; set; }
  6. public int headshots { get; set; }
  7. public int hits { get; set; }
  8. public int shots { get; set; }
  9. public int servicestars { get; set; }
  10. public string desc { get; set; }
  11. public string license { get; set; }
  12. public string category { get; set; }
  13. public string kit { get; set; }
  14. public string range { get; set; }
  15. public int fireModeAuto { get; set; }
  16. public int rateOfFire { get; set; }
  17. public int fireModeBurst { get; set; }
  18. public int fireModeSingle { get; set; }
  19. public string img { get; set; }
  20. public List<WeaponUnlocks> unlocks { get; set; }
  21. }
  22.  
  23. public struct WeaponUnlocks
  24. {
  25. public int id { get; set; }
  26. public string name { get; set; }
  27. public int curr { get; set; }
  28. public int needed { get; set; }
  29. public string nname { get; set; }
  30. public string img { get; set; }
  31. }
  32.  
  33. public class Weapons
  34. {
  35. public List<Weapon> getSortedWeaponList(List<Weapon> list)
  36. {
  37. if (typeof(List<Weapon>) == list.GetType())
  38. {
  39. return list;
  40. }
  41.  
  42. foreach (Weapon wep in list)
  43. {
  44. list.OrderBy(x => x.kills);
  45. }
  46.  
  47. return list;
  48. }
  49. }



Pagina:

12 antwoorden

Gesponsorde links
Daisycon - Verdien geld met uw website

Ontani – 11/11/2011 10:56
Opnieuw dezelfde reactie als eerst. Dat is geen JSON, dat is gewoon een PHP Array print_r

larssy1 – 11/11/2011 12:54 (Laatst gewijzigd op 14/11/2011 11:04)
Hmm, dacht niet dat dat bij deze van belang was..

http://www.unrealxs.com/beta/showplayer.js is nog gewoon toegangbaar als goed is.

--

Anyone?

cyberninjah – 14/11/2011 16:46
Waar is nou je json output ?

larssy1 – 14/11/2011 17:00 (Laatst gewijzigd op 17/11/2011 23:04)
showplayer.js kijk in the post voor je 

-----------------
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..

ArieMedia – 18/11/2011 00:21
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:

  1. $aGegevenData = array(); // dit is de array zoals die in het topic is gegeven
  2. echo json_encode($aGegevenData);



En voila, u hebt een json. Deze JSON kan je later via javascript weer uitlezen.

titjes – 18/11/2011 00:53
Citaat:
Gezien je met php werkt
Erhm C# is ook goed.. 

Maarten – 18/11/2011 09:17 (Laatst gewijzigd op 18/11/2011 09:21)
@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,...

Good luck.

larssy1 – 18/11/2011 13:07 (Laatst gewijzigd op 18/11/2011 13:12)
Bedankt voor het antwoorden mensen.

@ArieMedia
Zoals titjes zei, het is C# en geen PHP.
daarnaast is showplayer.js is wel degelijk JSON file.

Daarnaast, let er wel op dat ik zoals maarten ook al zei, de JSON wel gewoon parse.

waarvan dit een oud exemplaar is, waarvan ik nu een aangepaste versie gebruik:
  1. void RequestSoldierInfo()
  2. {
  3. HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.unrealxs.com/beta/showplayer.js");
  4. }
  5.  
  6. void Response_Completed(IAsyncResult result)
  7. {
  8. HttpWebRequest request = (HttpWebRequest)result.AsyncState;
  9. HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);
  10.  
  11. Stream stream = response.GetResponseStream();
  12. StreamReader reader = new StreamReader(stream);
  13.  
  14. var json = reader.ReadToEnd();
  15. json = json.Replace("var p = ", string.Empty);
  16.  
  17. var jObject = JObject.Parse(json);
  18.  
  19. string soldiername = jObject['name'].ToString();
  20. }



@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?

Maarten – 18/11/2011 14:09
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.

Weet niet hoor, ben maar hardop aan het denken 

larssy1 – 18/11/2011 15:29 (Laatst gewijzigd op 18/11/2011 15:47)
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.

Kijk output: http://www.unrealxs.com/beta/stats.php

Gesponsorde links


Pagina:

Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten:

© 2002-2012 Sitemasters.be - Regels - Gehost door: Vircon - Laadtijd: 0.111s