Re: Modify JSON in Swift
Re: Modify JSON in Swift
- Subject: Re: Modify JSON in Swift
- From: Roland King <email@hidden>
- Date: Sat, 07 Nov 2015 20:48:31 +0800
Quincey explained why it doesn’t work, value semantics run deep and consistent in Swift.
What you could do if you wanted, after messing with images, put it back into the json dictionary again, after your for var image in .. code
json[ “images” ] = images
now you have modified json to have a new images member.
> On 7 Nov 2015, at 14:54, Rick Mann <email@hidden> wrote:
>
> I'm trying to do this, but I can't modify the JSON structure.
>
>
> -----------------------
> import Foundation
>
> let s = "{ \"images\" : [ { \"thumb\" : \"url1\", \"width\" : 10 }, { \"thumb\" : \"url2\", \"width\" : 20 } ] }"
> let data = (s as NSString).dataUsingEncoding(NSUTF8StringEncoding)!
>
> do
> {
> if var json = try NSJSONSerialization.JSONObjectWithData(data, options: .MutableContainers) as? [String:AnyObject]
> {
> print("JSON: \(json)")
> if var images = json["images"] as? [[String:AnyObject]]
> {
> for var image in images
> {
> if let thumbURL = image["thumb"]
> {
> image["thumb"] = "FOOBAR: \(thumbURL)"
> print("new: \(image["thumb"])")
> }
> }
>
> let newData = try NSJSONSerialization.dataWithJSONObject(json, options: NSJSONWritingOptions(rawValue: 0))
> let s2 = NSString(data: newData, encoding: NSUTF8StringEncoding)
> print(s2)
> }
> }
> }
>
> catch let e as NSError
> {
> print("Error parsing model.json: \(e)")
> }
> -----------------------
> JSON: ["images": (
> {
> thumb = url1;
> width = 10;
> },
> {
> thumb = url2;
> width = 20;
> }
> )]
> new: Optional(FOOBAR: url1)
> new: Optional(FOOBAR: url2)
> Optional({"images":[{"thumb":"url1","width":10},{"thumb":"url2","width":20}]})
> -----------------------
>
> But it seems the way I drill down into the initial json dictionary gives me copies, or otherwise prevents me from modifying the dictionary like this.
>
> Any suggestions on what I can do? I really don't want to have to walk and rebuild the JSON myself.
>
> --
> Rick Mann
> email@hidden
>
>
>
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden